0x01 介绍
随着网民越来越习惯于网上购物,出现了越来越多的电商网站,在线交易平台等。
其中肯定要涉及在线支付的流程,而这里面也有很多逻辑。
由于这里涉及到金钱,如果设计不当,很有可能造成0元购买商品等很严重的漏洞。
0x02 脑图
0x03 详情
支付过程中可直接修改数据包中的支付金额
这种漏洞应该是支付漏洞中最常见的。
开发人员往往会为了方便,直接在支付的关键步骤数据包中直接传递需要支付的金额。
而这种金额后端没有做校验,传递过程中也没有做签名,导致可以随意篡改金额提交。
只需要抓包看到有金额的参数修改成任意即可。
我们来看一看网上的几个案例:
[必胜客宅急送支付表单伪造金额]
[肯德基宅急送支付表单伪造金额]
[新浪微号存在支付绕过漏洞]
[网通营业厅客户信息泄露、充值支付价格修改漏洞]负数限制
这种案例也比较常见,产生的原因是开发人员没有对购买的数量参数进行严格的限制。
这种同样是数量的参数没有做签名,导致可随意修改,经典的修改方式就是改成负数。
当购买的数量是一个负数时,总额的算法仍然是"购买数量x单价=总价"。
所以这样就会导致有一个负数的需支付金额。
若支付成功,则可能导致购买到了一个负数数量的产品,也有可能返还相应的积分/金币到你的账户上。
[百脑汇商城支付漏洞]
[m1905电影网存在严重支付漏洞]
[国美网上商城支付漏洞1元订购Iphone 4S!]
[又拍网旗下某站存在严重支付漏洞]
[新蛋中国支付漏洞]
[拉卡拉商店0元购支付问题]
[中粮52buy商城的支付漏洞]最大值溢出
[115网盘存在支付绕过]请求重放
购买成功后,重放其中请求,竟然可以使购买商品一直增加~
阿里云主机多次下订单,会出现0元订单情况,不知道程序员后端是如何写的……
[豆丁网购买豆元后可以将豆元倍增]-
并发
- 其他参数干扰
[新东方逻辑支付漏洞]
0x04 修复方案
其实修复方案很简单,对传递的金钱,数量等对最后支付金额会产生影响的所
有参数做签名。
并且注意签名算法不可被猜测到。
这样攻击者修改数据的时候验证便不会通过。
同时注意对已经交易的订单不可重复而造成重复重置的漏洞。