支付逻辑漏洞是指系统的支付流程中存在业务逻辑层面的漏洞
常见支付流程:
用户用钱包加上优惠券/折扣券确认购买商品的单价、数量以及购买时间,提交给平台或商家确认无误后,确认支付信息,报告购买信息。其中有三个重要的因素:用户、商品、平台/商家。这三个因素在支付流程中都有可能造成支付漏洞。
支付逻辑漏洞一般分为四类:
1.支付过程中可以修改支付金额
2.可以将订单中的商品数量修改为负值
3.请求重放导致
4.其他问题(程序异常,其他参数修改导致问题等)
其他支付问题补充:
修改支付状态、修改附属值(优惠券积分等)、修改支付接口、替换多个订单、重复支付等。
PS:实在不好意思被log挡住了,再补一张
发包之后成功添加了购物车
3.见证漏洞的诞生
这个时候我们的商品数量变成了负数金额变成了0,所以此处存在逻辑缺陷,但是这个开发好像只是对数字比较敏感,没有出现“理想中”的负数金额,而是归0.
后面就是点去结算,然后确定支付,支付成功,在订单列表也显示订单支付成功。因为考虑到网站在正常运行,之前测试有过一次提交订单(账号忘记了),这次就没有放上成功截图。
1. 修改支付价格
在支付流程中,提交购买信息、确认支付、确认购买的流程中,如果相互之间没有做好验证机制,就有可能出现修改支付价格的漏洞。
在这三个步骤中,可以尝试抓包,修改支付价格。
2. 修改支付状态
这个问题是没有对支付状态的值跟实际订单支付状态进行校验,导致点击支付时抓包修改决定支付或未支付的参数为支付状态的值从而达到支付成功。
3. 修改购买数量(此文例子已经运用)
抓包,尝试修改购买数量,如果修改购买数量后,价格不变,亦或者修改购买数量为负数,如果价格为负数,同样会导致支付问题的产生。
4. 修改优惠券、积分
如果优惠券、折扣券、积分等可以换取相应的物品,那么也有可能出现支付漏洞,这个流程与一般支付流程类似,可以尝试挖掘。
5. 修改支付接口
比如一些网站支持很多种支付,比如自家的支付工具,第三方的支付工具,然后每个支付接口值不一样,如果逻辑设计不当,当我随便选择一个点击支付时进行抓包,然后修改其支付接口为一个不存在的接口,如果没做好不存在接口相关处理,那么此时就会支付成功。
6. 多重替换支付
7. 重复支付
8. 最小额支付
9. 值为最大值支付问题
以前也是看到过相关的例子,一些网站比如你购买商品,这里有2个思路修改值,1是直接修改支付金额值为最大值,比如999999999,或者修改附属值,如优惠卷,积分等为999999999,如果这里逻辑设计有问题,那么其支付金额会变为0。
参考:
https://blog.csdn.net/weixin_44023442/article/details/113487816
END
本文始发于微信公众号(NOVASEC):记一次简单的逻辑漏洞-支付漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论