Web漏洞之支付漏洞
(部分搜寻的资料用于自学,如有侵犯,联系可删! ———— by 611)
逻辑漏洞之支付漏洞
部分资料转载自:https://www.secpulse.com/archives/67080.html
一、商品的购买流程
选择商品和数量——>选择支付及配送方式——>生成订单编号——>订单支付选择——>完成支付
二、常见的篡改参数
当我们提交订单时,抓取数据包可能会发现提交的许多参数都是可以修改的,如果后端处理不当,修改完就可能对结果产生影响;常见的篡改参数有:商品编号ID、购买价格、购买数量、支付方式、订单号、支付状态等。
三、常见的修改方法
我们以DamiCMS作为靶场示例,以1件5400元的大米CMS为例,点击立即购买,抓取数据包,进行参数的分析:
根据数据包进行分析,传入的部分参数含义应该如下:
m——>会员 a——>立即购买
iscart——>加购 id——>商品编号
name——>商品名字 qty——>购买数量
price——>单价
1、修改支付价格
在支付过程中,购买分为订购、确认信息、付款几个步骤,每一步都应该进行检验,如果缺了某步的验证机制,我们就会有机可乘,将价格改成小金额或者负数。
- 我们尝试将价格改少,发现价格成功被改变。(也可以尝试改成负数)
2、修改支付状态
该问题是没有对支付状态的值跟实际订单支付状态进行校验,导致点击支付时抓包,修改决定支付或未支付的参数为支付状态的值从而达到支付成功。
3、修改购买数量
在支付过程中,数量也决定价格,当我们把数量值改成负数的时候,那么金额一会变为负数(有的会变成0),这样就导致了支付问题的产生。
- 数量变为负数时,价格也变为负数。
- 当数量变为负数时,价格变为0。
4、修改支付接口
网站一般会有很多个支付接口,支持很多种支付,比如:支付宝支付、微信支付、网银支付。如果验证不当,随意点击一个进行支付时,我们进行抓包,将支付接口改成一个并不在选项内的支付接口,比如我们自己写的支付接口,那么所支付的钱就会付给那个修改后的支付接口。
5、替换支付
下单时对于每个订单都会产生一个随机的订单编号,假如我们同时下了两个单子(分别是金额较大的和金额较小的),就可以获得两个订单编号,而当我们捕获这两个数据包后,将金额较大的订单编号替换成那个金额较小的订单编号,如果验证不足,那么就可以以较少的金额购买较高额的产品。