lsekfe 发表于 2022-10-13 14:26:41

浅谈某商业APP安全问题!

 -问题现象描述-
  据报道,某黑客通过软件抓包、PS身份证等非法手段,在某城商行手机银行APP内使用虚假身份信息注册银行Ⅱ、Ⅲ类账户。
  其操作方法具体来说,是在注册账户过程中,先输入本人身份信息,待进行人脸识别步骤时,利用软件抓包技术将银行系统下发的人脸识别身份认证数据包进行拦截并保存。
  而后,在输入开卡密码步骤,将APP返回到第一步(上传身份证照片步骤),输入伪造的身份信息,并再次进入到人脸识别的身份验证步骤,此时,再上传此前拦截下来的包含其本人的身份信息数据包,使系统误以为要比对其本人的身份信息,然后用本人人脸通过银行系统人脸识别比对,使得成功利用虚假身份信息注册到银行账户。
  通过这种操作,成功注册银行Ⅱ类账户76个,然后将包括身份证号、银行卡号、绑定的手机号在内的账户信息打包卖给其他人,共获利22010元。也导致此城商行从2019年1月18日至今一直关闭手机银行APP软件中Ⅱ、Ⅲ类账户开户链接功能。
  -问题原因分析-
  水平越权缺陷漏洞是Web应用常见的业务逻辑漏洞之一。它的形成原因是由于服务器端对客户提出的数据操作请求过分信任,忽略了对该用户操作权限的判定。
  攻击者使用一个合法账户,即可对存在越权缺陷漏洞的其他账户数据进行非法的操作,例如查询、插入、删除、修改等常规数据库命令。用户名或者用户ID是Web程序用来判断对哪个账户的数据进行操作的依据,这个参数如果通过客户端来提交,并且Web应用未对该参数做检查校验的情况下,通过修改请求数据中的相应字段则实现越权数据操作。
  服务器端系统仅仅对该关键字段进行匹配,并没有验证该关键字段是否属于发起请求的账户,此项安全策略的缺陷就是越权数据操作漏洞的产生的原因。针对该漏洞的攻击者修改请求中的某些关键字段后提交数据,就可以对任意用户的数据进行操作。
  通常在实际的Web应用中,不一定是用户名或者用户ID作为数据操作的判断字段,还有可能是其他一些字段。无论是什么字段,存在越权数据操作漏洞的Web应用都没有对它们的账户归属进行判断,没有确认发起请求的账户是否具有操作该数据的权限就允许了数据库去执行相应命令。
  -测试手段-
  在越权漏洞检测方法中,测试人员使用两个以上用户账号,比如使用两个浏览器分别登录两个账号,互相测试是否能对另一方的用户数据进行越权操作。测试人员需要对比testl账户和test2账户的身份识别参数,确保将testl账户的数据操作请求中所有身份识别参数修改为test2账户对应数值。
  如果test2账户提交数据能够操作成功;则标记此为水平授权漏洞。
  -系统优化方式建议-
  系统为了防止水平越权漏洞,建议防篡改设计,即客户端发起联机交易点击下一步预处理,服务端产生一个交易流水号,将流水号与交易信息(客户号、身份信息等)存入缓存服务器redis中,客户端提交时传入流水号及交易信息,服务端进行交易数据校验。如校验数据不一致,则判为数据被篡改,直接返回并提示客户。

页: [1]
查看完整版本: 浅谈某商业APP安全问题!