支付漏洞算是一个高危漏洞,毕竟和钱沾边就轻不了,以下总结汇总了一些支付漏洞可能存在的操作点。
一.直接的价格修改
一元买一部手机,直接用 fd抓包,有这样缺陷的网站,被称为内线举报。不过,这一点,他还是要说的。
在付款的过程中,购物通常有三个步骤:下单,确认信息,付款。
修改价格的三步中的任何一步都可以,如果前两步都有确认机制,那就可以在最后一步支付的时候抓包,试图修改数额,如果在最后一步没有检查出来,就会出现问题,我们也可以将修改的金额改为负数等等。
二.修改支付状态
这和我们前面所说的登陆程序有一些逻辑上的缺陷,网站会根据这些代码来判定是否成功。比如两百次成功,四百次失败。
其他的例子有: A定单-0001已完成, B定单0002尚未完成
如果您试图在支付过程中将定单 B的编号改为定单 A,则将造成尚未支付的款项直接显示为已完成。
三.修改购买数量
比如你买了一份汉堡,10份就是一百份,如果我们把价格改成了-10份,那岂不是说,平台会给我们100份?
四:支付附属值修改
我们在支付的时候,常会给你一些优惠劵,积分,满减等等,而这些值同样都是没有操作的点。
①:修改优惠劵金额
我们可以直接对数据包中优惠价的价格数量等进行操作,如果服务器对其没有验证,就会导致漏洞产生。
②:修改优惠劵金额及业务逻辑问题
有的时候,即使我们已经修改好了,但在付款的时候,也有可能会出现错误,或者是出现了数额不准确的情况。此时,请大家不要放弃,我们也可以尝试一些其他的方法,即使付款失败,也有可能建立起新的订单,而且价格还是和之前一样,我们还可以继续付款。
另外,现在很多平台都有类似于钱包的功能,我们可以在里面加一笔钱,然后用自己的钱包来支付,这样也有可能通过。
③:修改积分金额
有的网站可以用点付款,点的钱可以用来兑换现金,我们也可以试着修改一下,做一下试验;而且我们还可以反过来做,比如下十块钱,送一块钱,那我们就把钱改成100块钱,不就行了吗?
④:满减修改
比如,在双十一期间,我们可以把300元的折扣改成101元,或者减少100元。
同时还可以使用运输费用等其它辅助价值,这些都是可以修改的。
五:订单替代支付
例如:我们建立一张10块钱的定单,建立一张100块的订购单,在付款的时候,我们把 B的订购号码变成了 A,而服务器也没有做其它的验证,就可以顺利付款,也就是说,从10块钱变成100块钱。
简单来说,就是因为不需要任何验证,所以我们只需要记录一块钱的单号,就可以把0.01的单号换成0.01的单号,这样我们就可以看到自己的账户上多了一块钱。
六:支付接口替换
举个例子来说,有些网站支持多种支付方式,有自己的支付工具,也有第三方的支付工具。而且,每一种支付界面的价值都是不同的,如果逻辑设计不好,在我随机选取了一个点击支付时,将它的支付界面进行了抓包,再将它的支付界面修改成一个不存在的界面,如果没有做好,就不存在界面相关的处理,这个时候就会完成付款。
七:重复支付
打个比方,京东有试用券,一张试用券可以试用一种产品,我们可以把试用品的数据包反复提交,如果客服方不验证,就会出现大量的订单,但如果取消了,试用卡就会被退回来,如果我们把所有的订单都退了,会不会得到更多的试玩卡?
八.最小额支付及最大支付(金额溢出)
①:最小支付
在许多“白帽”测试中,被更改的金额通常都是0.01或者是负值,我要说,这很可能会忽略掉一些可能的支付问题,因为有的厂商在设计之初就设定了1元,再低的话,就会被判定为支付失败。因此,我们在测试的时候,不能把价格调得过低,只要低于原价一块钱,就能说明有支付漏洞。
②:最大支付(金额溢出)
通常来说,在开发过程中,物品的数量都是以 int类型来表示的,所以 int的最大数值是2147483647。查看是否发生了整型溢位,也就是支付状态不正常的情况下,才能使付款成功。
使用的公式是:2147483647/项目单价+1=项目总量
九.四舍五入导致支付漏洞
以充值为例,余额值一般保存到分为止,那么如果我充值0.001元也就是1厘,一般开发会在前端判断我们的数字,或者将最后一位四舍五入,使用支付宝充值是直接报错的,因为第三方一般只支持到分。
那我们如果充值0.019呢,由于支付宝只判断到分,所以导致只能支付0.01,而由于我们支付成功,前端会将9四舍五入,直接变成0.02,所以等于直接半价充值。
十.首单优惠,无限重购
很多厂家为了留住用户,都会有一个首月半价,或者是免费等等的活动,我们可以抓取这个数据包,进行多次支付,就可以一直优惠购买。(百度云去年有这个漏洞,可以无限6元一月超级会员。)
十一.越权支付
这是很久以前的事情了,但是现在这种问题已经不多了,在支付的时候,会显示出当前用户的 ID,例如:usern名= XXXXX,在没有经过核实的情况下,它的支付方式是一次付款,不需要输入密码之类的,这时就可以将该用户 ID更改为另一个用户 ID,从而实现用另一个用户的账户来支付你的产品。
或利用 CSRF进行攻击等。
十二.并发数据包
这种想法,就是在购买一件物品的时候,进行付款操作,在高并发性的情况下,重复购买,有可能导致10块钱的物品,在高并发的情况下,10块钱买了一堆。在某些情况下,需要满足一定的要求,比如两次,一块钱一次,需要4块钱。
(换个思路:退款什么的,也可以同时进行。)
十三.盲盒类抽奖
现在随着盲盒的流行,网上的盲盒也越来越多,举个简单的例子,比如有三个盲盒,两个是常规款,一个是隐藏款,那么我们要怎么才能百分百得到隐藏款呢?
十四.直播打赏类
有些直播平台,打赏是按照 ID的多少来分的,所以也有可能会有内部评测的礼物,我们可以试着搜索一下,看看有没有什么隐藏的信息。