在线支付逻辑漏洞总结

瞌睡龙 2013-07-19 19:11:00

0x00 背景介绍


随着网民越来越习惯于网上购物,出现了越来越多的电商网站,在线交易平台等。

其中肯定要涉及在线支付的流程,而这里面也有很多逻辑。

由于这里涉及到金钱,如果设计不当,很有可能造成0元购买商品等很严重的漏洞。

0x01 检测方法与案例


根据乌云上的案例,支付漏洞一般可以分为五类,如果发现其他的类型,欢迎补充:

1、支付过程中可直接修改数据包中的支付金额

这种漏洞应该是支付漏洞中最常见的。

开发人员往往会为了方便,直接在支付的关键步骤数据包中直接传递需要支付的金额。

而这种金额后端没有做校验,传递过程中也没有做签名,导致可以随意篡改金额提交。

只需要抓包看到有金额的参数修改成任意即可。

我们来看一看乌云上的几个案例:

WooYun: 必胜客宅急送支付表单伪造金额

WooYun: 肯德基宅急送支付表单伪造金额

WooYun: 新浪微号存在支付绕过漏洞

WooYun: 淘宝网某处存在严重支付漏洞

WooYun: 佳域手机官方商城支付漏洞(这个亮点是真的到货了……)

WooYun: 91分站存在支付绕过

WooYun: 江西移动1元钱买手机漏洞

WooYun: 爱拍主站存在严重漏洞

WooYun: 再爆苏宁某站点重大漏洞

WooYun: 苏宁某站点存在严重漏洞

WooYun: TP-Link官方商城支付漏洞

WooYun: 鲜果网支付漏洞

WooYun: 京东商城购买商品时,可以修改商品金额,并且支付成功

WooYun: 京东团购订单金额可在客户端修改并提交网银支付

WooYun: 网通营业厅客户信息泄露、充值支付价格修改漏洞

2、没有对购买数量进行负数限制

这种案例也比较常见,产生的原因是开发人员没有对购买的数量参数进行严格的限制。

这种同样是数量的参数没有做签名,导致可随意修改,经典的修改方式就是改成负数。

当购买的数量是一个负数时,总额的算法仍然是"购买数量x单价=总价"。

所以这样就会导致有一个负数的需支付金额。

若支付成功,则可能导致购买到了一个负数数量的产品,也有可能返还相应的积分/金币到你的账户上。

WooYun: 百脑汇商城支付漏洞

WooYun: m1905电影网存在严重支付漏洞

WooYun: 国美网上商城支付漏洞1元订购Iphone 4S!

WooYun: 又拍网旗下某站存在严重支付漏洞

WooYun: 新蛋中国支付漏洞

WooYun: 拉卡拉商店0元购支付问题

WooYun: 中粮52buy商城的支付漏洞

WooYun: 115网盘存在支付绕过

最后一个漏洞与其他不同的是把数量改成一个超大的数,而不是负数。

结果导致支付的金额可能超过一定数值而归0。

3、请求重放

购买成功后,重放其中请求,竟然可以使购买商品一直增加~

阿里云主机多次下订单,会出现0元订单情况,不知道程序员后端是如何写的……

WooYun: 豆丁网购买豆元后可以将豆元倍增

WooYun: 阿里云0元订单,服务器随便买

4、其他参数干扰

此案例金钱已经做了签名认证,修改后不通过。

但是仍然有一个参数会对最后的金额产生影响而没有一起做签名导致问题产生。

WooYun: 新东方逻辑支付漏洞

0x02 修复方案


其实修复方案很简单,对传递的金钱,数量等对最后支付金额会产生影响的所有参数做签名。

并且注意签名算法不可被猜测到。

这样攻击者修改数据的时候验证便不会通过。

同时注意对已经交易的订单不可重复而造成重复重置的漏洞。

参考:http://zone.wooyun.org/content/878

评论

V

VIP 2013-07-21 08:55:15

学习了

有妹子送上 2013-07-21 19:36:18

受教育了。。。

I

IXY 2013-07-21 23:25:01

感谢分享

T

Thanks 2013-07-22 13:56:00

整理的不错,解决方案比较业余。

瞌睡龙 2013-07-22 14:18:01

如果有专业的解决方案,欢迎指正~

L

livers 2013-07-22 14:24:40

还行吧 算是通用的。像淘宝一样,可以通过双方协议更改交易价格的那种订单,必须具体分析着来 没通用的

路人甲 2013-07-24 18:47:56

整理的挺好的,学习了。
解决方案都没透露,估计大家修补的方式都不一样。

L

liutao0532 2013-07-31 14:39:55

学习了~~~

A

ayys 2014-03-04 18:06:44

mark

小贱人 2014-03-25 16:44:28

总结得挺全面的

蛇精病 2015-01-23 09:34:10

真棒,希望能有更多大牛 总结各种漏洞

C

Code_Monkey 2015-05-16 16:49:13

先去研究下参数签名的问题

情痴 2015-11-23 13:35:05

学习了,谢谢大牛分享

瞌睡龙

fighting……

twitter weibo github wechat

随机分类

memcache安全 文章:1 篇
APT 文章:6 篇
事件分析 文章:223 篇
数据安全 文章:29 篇
Java安全 文章:34 篇

扫码关注公众号

WeChat Offical Account QRCode

最新评论

Article_kelp

因为这里的静态目录访功能应该理解为绑定在static路径下的内置路由,你需要用s

N

Nas

师傅您好!_static_url_path那 flag在当前目录下 通过原型链污

Z

zhangy

你好,为什么我也是用windows2016和win10,但是流量是smb3,加密

K

k0uaz

foniw师傅提到的setfge当在类的字段名成是age时不会自动调用。因为获取

Yukong

🐮皮

目录