[其他] 在线支付逻辑漏洞总结

原文地址:http://drops.wooyun.org/papers/345             分类:运维安全
支付漏洞一般可以分为四类:
一、支付过程中可以直接修改数据包中的支付金额
这种漏洞应该是支付漏洞中最常见的。开发人员往往会为了方便,直接在支付的关键步骤数据包中直接传递需要支付的金额。而这种金额后端没有做校验,传递过程中也没有做签名,导致可以随意篡改金额提交。只需要抓包看到有金额的参数修改成任意即可。
二、没有对购买数量进行负数限制
这中案例也比较常见,产生的原因是开发人员没有对购买的数量参数进行严格的限制。这种同样是数量的参数没有做签名,导致可随意修改,经典的修改方式就是改成负数。当购买的数量是一个负数时,总额的算法依然是“购买数量×单价=总价”。所以这样就会导致有一个负数的支付金额。若支付成功,则可能导致购买到了一个负数数量的产品,也有可能返还相应的积分/金币到你的帐户上。
三、请求重放
购买成功后,重放其中请求,使得购买商品一直增加。
四、其他参数干扰
更改参数,使得对金额的签名认证失效。

修复方案
对传递的金钱,数量等对最后金额会产生影响的所有参数做签名。并且注意签名算法不可被猜测到。这样攻击者修改数据的时候便不会通过。同时注意对已经交易的订单不可重复而造成重复重置的漏洞。

你可能感兴趣的:(其他)