3. 逻辑漏洞之支付漏洞
支付漏洞
乌云案例之顺丰宝业务逻辑漏洞
案例说明
顺丰宝存在支付逻辑漏洞,可以允许用户1元变1亿元。这个漏洞在其他网站很难存在,原因是页面交互都使用了对字段做签名。但是顺丰宝没做签名,导致支付金额可以被修改为任意数值。猜测成因是开发人员为了快速实现功能,而忽略了其中数据签名的步骤。可以想象,如果我充值1个亿,然后再使用取款功能,会产生神马效果。
利用过程
1 登录顺风宝查看余额
2 充值,选择招商银行。填写充值金额1,如下图:
提交之后如下:
3 开启firefox的tamper,点击支付,截取数据包,修改参数Amount为一分
4 提交跳转到招行支付
5 支付成功后,招行扣去一分
6 查询余额
乌云案例之乐视商城逻辑支付漏洞
案例说明
订单的价格在支付链接中出现,导致用户可以修改任意金额购买产品
利用过程
1 下单后选择支付,如图:
2 注意下面的连接,orderPrice参数为商品总额
3 将价格改成0.1
乌云案例之读览天下支付逻辑漏洞
案例说明
通过替换支付订单号的方式,来完成花小钱买大东西。同时生成两个订单号,一个贵的一个便宜,首先支付便宜的,银行往回返回的时候,替换订单号,然后就可以完成两个订单的同时支付。
漏洞成因
服务端只检查支付是否完成,并没有确认订单金额与银行支付金额是否相同,过分信任客户端提交的数据
修复方案
检查支付完成后价格和买的产品的价格是一样的。
乌云案例之天翼云盘通支付逻辑漏洞
案例说明
天翼云-云盘通设计缺陷,可提交负人民币的订单。
利用过程
1 选择套餐如图:
2 提交订单然后我们抓包,将购买年限改成负数
3 提交数据包后如图:
乌云案例之药房网订单提交逻辑漏洞
案例说明
药房网订单提交存在逻辑漏洞可对企业造成经济损失
利用过程
1 生成订单
2 使用Burp截断数据包,修改运费为一元
3 提交数据包
乌云案例之淘美网绕过支付
案例说明
淘美网重置处存在逻辑漏洞,可绕过支付直接充值成功
经过测试发现支付成功后流程走至如下链接:
http://www.3need.com/index.php?controller=site&action=payok&out_trade_no=充值订单号
只要提供对应的充值订单号 就可以绕过支付直接充值成功。
利用过程
1 新注册个账号进行测试
2 账号余额0
3 我们去充值,这个过程用burpsuite抓包,金额随意写
4 抓到支付订单号然后构造链接:
5 直接访问这个链接
6 接下来美女信息随意看了,不够再充
乌云大神的修复方案
1 和银行交易时,做数据签名,对用户金额和订单签名。
2 敏感参数不要明文放在URL中
3 服务端效验客户端提交的参数
4 在服务端计算金额的时候,一定要判断是否为正数。
5 支付过程中加一个服务器生成的key,用户校验参数有没有被串改。
6 如果一定需要用URL传递相关参数,建议进行后端的签名验证
7 订单金额和充值接口返回的数据进行校验
8 提交订单时后台判断单价是否与数据库中相符,如不符则返回错误。
9 支付时应从服务器拉取数据,而不是直接读客户端的值!!
-----------------文章来自微信公众号---信安之路