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

2644 篇文章 26 订阅
2634 篇文章 14 订阅

-问题现象描述

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

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

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

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

-问题原因分析

水平越权缺陷漏洞是Web应用常见的业务逻辑漏洞之一。它的形成原因是由于服务器端对客户提出的数据操作请求过分信任,忽略了对该用户操作权限的判定。

攻击者使用一个合法账户,即可对存在越权缺陷漏洞的其他账户数据进行非法的操作,例如查询、插入、删除、修改等常规数据库命令。用户名或者用户ID是Web程序用来判断对哪个账户的数据进行操作的依据,这个参数如果通过客户端来提交,并且Web应用未对该参数做检查校验的情况下,通过修改请求数据中的相应字段则实现越权数据操作。

服务器端系统仅仅对该关键字段进行匹配,并没有验证该关键字段是否属于发起请求的账户,此项安全策略的缺陷就是越权数据操作漏洞的产生的原因。针对该漏洞的攻击者修改请求中的某些关键字段后提交数据,就可以对任意用户的数据进行操作。

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

-测试手段

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

如果test2账户提交数据能够操作成功;则标记此为水平授权漏洞。

-系统优化方式建议

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


资源分享

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走…

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值