本文最后更新于 2024-05-13,文章内容可能已经过时。

支付逻辑漏洞:

简介:

随着互联网的发展,生活变得越来越方便,往日需要我们跋山涉水购买的物品,如今只要在网上下个订单就可以送到家中,网上购物给我们带来极大的便利的同时也带来了安全风险,而支付漏洞就是影响我们网上购物的安全风险之一。

产生原因:

开发人员往往为了方便,直接在支付的关键步骤数据包中直接传递需要支付的金额。而这种金额后端没有做校验,传递过程中也没有做签名,导致可以随意篡改金额提交。只需要抓包看到有金额的参数修改成任意的即可。

支付逻辑漏洞举例:

image-luoji-01

01:修改购买数量:

在进行支付订单的时候,可以修改物品的数量来进行操作,可以通过支付一件的价格购买多件,或者修改成负数进行增加资金。
image-luoji-02

image-luoji-03

(如图抓包后修改价格为0.01)

02:修改支付价格:

利用:抓包修改价格参数的内容,在支付当中,购买商品一般分为三步走:

订购,确认信息,付款。

在这三个步骤中都有可能有支付漏洞存在,金额可以尝试修改小额或者修改为负数。

03:修改支付对应的商品:

通过修改商品对应的id号,可以用低价购买高价格的商品实例。

乌云上的漏洞例子:

image-20240103144812858

04.修改支付的状态:

没有对支付状态的值跟实际订单支付状态进行校验,导致点击支付时抓包修改决定支付或者未支付的参数作为支付状态的值从而达到支付成功。

05.修改附属优惠/状态:

1、修改优惠券金额

2、修改积分金额。

3、修改id后无限制试用。

4、修改优惠价

如修改优惠劵,一些商品有优惠价,那么在支付的时候抓包,修改这个优惠价就可以造成支付问题的产生。

06.测试数据包未删除

1.开发在进行测试的时候有一些测试数据未删除,导致用户可以购买测试数据,或者领取测试的优惠劵。

其他类型的支付漏洞:

修改支付接口:(很少)比如一些网站支持很多种类型的支付,比如自家的支付工具,第三方的支付工具,然后每个支付接口的值不一样,如果逻辑设计不当,当我随便选择一个点击支付的时候进行抓包,然后修改其支付接口为一个不存在的接口,如果没做好不存在接口相关处理,那么此时就会支付成功,

重复支付:类似试用劵,你试用完成或者主动取消试用时,试用劵会返回到账户中。

最大额支付:在设置的时候,商城的支付金额有上限,当输入99999999999类似的一个超大数的时候,可能会存在溢出,或者是直接变为0

条件竞争:同时发包获取优惠劵等,可以绕过限制的次数。