guoxilin
作者guoxilin2020-04-05 12:14
高级非功能测试专家, 某科技公司

某城商行手机银行水平授权漏洞问题浅析

字数 1290阅读 1529评论 0赞 0

问题现象描述:

据报道, 2019 年 1 月 5 日至 1 月 15 日期间,某黑客通过软件抓包、 PS 身份证等非法手段,在某城商行手机银行 APP 内使用虚假身份信息注册银行 Ⅱ 、 Ⅲ 类账户。

其操作方法具体来说,是在注册账户过程中,先输入本人身份信息,待进行人脸识别步骤时,利用软件抓包技术将银行系统下发的人脸识别身份认证数据包进行拦截并保存。

而后,在输入开卡密码步骤,将 APP 返回到第一步 ( 上传身份证照片步骤 ) ,输入伪造的身份信息,并再次进入到人脸识别的身份验证步骤,此时,再上传此前拦截下来的包含其本人的身份信息数据包,使系统误以为要比对其本人的身份信息,然后用本人人脸通过银行系统人脸识别比对,使得成功利用虚假身份信息注册到银行账户。

通过这种操作,成功注册银行Ⅱ类账户 76 个,然后将包括身份证号、银行卡号、绑定的手机号在内的账户信息打包卖给其他人,共获利 22010 元。也导致此城商行从 2019 年 1 月 18 日至今一直关闭手机银行 APP 软件中 Ⅱ 、 Ⅲ 类账户开户链接功能。

问题原因分析:

水平越权缺陷漏洞是 Web 应用常见的业务逻辑漏洞之一。它的形成原因是由于服务器端对客户提出的数据操作请求过分信任,忽略了对该用户操作权限的判定。攻击者使用一个合法账户,即可对存在越权缺陷漏洞的其他账户数据进行非法的操作,例如查询、插入、删除、修改等常规数据库命令。用户名或者用户 ID 是 Web 程序用来判断对哪个账户的数据进行操作的依据,这个参数如果通过客户端来提交,并且 Web 应用未对该参数做检查校验的情况下,通过修改请求数据中的相应字段则实现越权数据操作。服务器端系统仅仅对该关键字段进行匹配,并没有验证该关键字段是否属于发起请求的账户,此项安全策略的缺陷就是越权数据操作漏洞的产生的原因。针对该漏洞的攻击者修改请求中的某些关键字段后提交数据,就可以对任意用户的数据进行操作。

通常在实际的 Web 应用中,不一定是用户名或者用户 ID 作为数据操作的判断字段,还有可能是其他一些字段。无论是什么字段,存在越权数据操作漏洞的 Web 应用都没有对它们的账户归属进行判断,没有确认发起请求的账户是否具有操作该数据的权限就允许了数据库去执行相应命令。

测试手段

在越权漏洞检测方法中,测试人员使用两个以上用户账号,比如使用两个浏览器分别登录两个账号,互相测试是否能对另一方的用户数据进行越权操作。测试人员需要对比 testl 账户和 test2 账户的身份识别参数,确保将 testl 账户的数据操作请求中所有身份识别参数修改为 test2 账户对应数值。如果 test2 账户提交数据能够操作成功;则标记此为水平授权漏洞。

系统优化方式建议

系统为了防止水平越权漏洞,建议防篡改设计,即客户端发起联机交易点击下一步预处理,服务端产生一个交易流水号,将流水号与交易信息 ( 客户号、身份信息等 ) 存入缓存服务器 redis 中, 客户端提交时传入流水号及交易信息,服务端进行交易数据校验。如校验数据不一致,则判为数据被篡改,直接返回并提示客户。

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

X社区推广