优个网存在支付逻辑漏洞(1分钱支付)

漏洞概要

缺陷编号:WooYun-2015-0103945

漏洞标题:优个网存在支付逻辑漏洞(1分钱支付)

相关厂商:yoger.com.cn

漏洞作者:px1624

提交时间:2015-03-26 17:01

公开时间:2015-05-10 17:12

漏洞类型:设计缺陷/逻辑错误

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

Tags标签:

漏洞详情

披露状态:

2015-03-26: 细节已通知厂商并且等待厂商处理中
2015-03-26: 厂商已经确认,细节仅向厂商公开
2015-04-05: 细节向核心白帽子及相关领域专家公开
2015-04-15: 细节向普通白帽子公开
2015-04-25: 细节向实习白帽子公开
2015-05-10: 细节向公众公开

简要描述:

诶,前天在优个网买了套乒乓球装备,花了700多块大洋!第一次用优个网,感觉这网站用来买体育器材还不错,客服态度蛮好的。然后搜了搜这网站,竟然还是国内最大的体育器材电商。但是整个购买过程中,一直感觉这网站的安全做的很水,所以今天就专门去再看看有没有啥安全问题。

详细说明:

1这里随便选了个商品作为演示,未真正支付利用。

2 正常下单程序去下单,然后支付,直到这一步。

3 然后发现付款,其实就是访问链接http://www.yoger.com.cn/API_pay/alipay_direct/alipayto.asp?orderID=po******_****&paySum=10904 发现前面的orderID就是订单号,后面的paySum就是支付的金额总和。那么果断修改下再访问,把1090改成0.01。http://www.yoger.com.cn/API_pay/alipay_direct/alipayto.asp?orderID=po******_****&paySum=0.015 呵呵,这样就可以一分钱购买了。

漏洞证明:

1 可以看到上图中,已经是跳转到了支付宝的支付页面了,已经是支付宝的域名了,所以优个的服务器已经无法控制了,这里我就不去支付了。2 然后还有个问题需要说明,这里由于是在支付的时候进行的串改,所以在订单中显示的支付金额应该还是原价,所以一般也很难被发现吧。包括你们后台的录订单的信息应该也是正常的,只是支付宝的真正收款被串改了。3 所以,有可能这个漏洞已经被不法分子给利用了,建议你们还是自己排查排查下吧。目测如果被利用,然后要找出来,难度也挺大的!所以还是赶紧修补吧!!!

修复方案:

1支付过程中加一个服务器生成的key,用户校验参数有没有被串改。2 优个网真心挺不错,好多东西都好想买,求送点礼品卡。

漏洞回应

厂商回应:

危害等级:中

漏洞Rank:7

确认时间:2015-03-26 17:11

厂商回复:

感谢您关注优个网,进行串改确实可以做到只支付1分钱,出站的数据我们没有进行检验,由支付宝完成,但接收回来的数据是会校验的,如果只支付一分钱,订单是无法完成支付的,而这1分钱会存入他的优个网帐户。

最新状态:

暂无

评价

  1. 2010-01-01 00:00 wanglaojiu 白帽子 | Rank:45 漏洞数:12)

    px大牛,给你一分钱,来套 红马HONMA高尔夫球杆。

  2. 2010-01-01 00:00 px1624 白帽子 | Rank:963 漏洞数:126)

    @优个网 是么?那我晚上回去用支付宝支付试试,只校验接收的数据一般也是可以伪造的额

  3. 2010-01-01 00:00 BMa 白帽子 | Rank:1666 漏洞数:121)

    @px1624 有的后端还会有验证机制,服务器会校验支付宝传回的数据,与订单金额进行对比,除非大于等于,订单状态才会改变,当然,如果生成的订单就是有问题的,那么订单就可以成功支付

  4. 2010-01-01 00:00 px1624 白帽子 | Rank:963 漏洞数:126)

    @BMa 就算有,一般这个传回数据是可以串改的,下班了,我回去试试,公司不能用支付宝。。。

  5. 2010-01-01 00:00 BMa 白帽子 | Rank:1666 漏洞数:121)

    @px1624 不是传给本地的,完成支付请求后,支付宝直接传给对端服务器

  6. 2010-01-01 00:00 byr5ec 白帽子 | Rank:10 漏洞数:3)

    回调的时候有校验的,是不能支付成功。
    这类问题,商家应该有异价系统和告警吧,即使你成功了,也不出单不出货。

  7. 2010-01-01 00:00 px1624 白帽子 | Rank:963 漏洞数:126)

    @byr5ec @BMa @优个网 嗯,晚上回来试了试支付,的确是最后还有层防御,串改后的支付成功后,就是直接充值到余额里面了。所以这个评级挺客观。其实研究了下,发现这个逻辑是用支付宝付款后,是先会将支付宝的钱充值到余额中,然后在用余额支付,然后余额支付的时候有判断,大概逻辑是这样子。

  8. 2010-01-01 00:00 byr5ec 白帽子 | Rank:10 漏洞数:3)

    如果真是这样的支付逻辑,效率有点问题吧多一层信息交互,不清楚厂商出于什么样考虑。

  9. 2010-01-01 00:00 byr5ec 白帽子 | Rank:10 漏洞数:3)

    因该不是在余额支付的时候做的判断。

  10. 2010-01-01 00:00 byr5ec 白帽子 | Rank:10 漏洞数:3)

    还是回调做的校验,因为发现价格不对了,才把修改后的金额放到你的个人帐号里,厂商这个行为赞一下。要不然厂商还得给你退款操作。
    这就是个常规的支付流程。

  11. 2010-01-01 00:00 px1624 白帽子 | Rank:963 漏洞数:126)

    @byr5ec 其实和你理解的不一样,这个设计是这样子的,比如你支付一个500元的东西的时候,你选择支付宝支付,那么当你支付宝支付成功后,其实是系统会自动将你支付宝支付的金额充值到你的余额中。然后在自动从余额中进行扣除,完成下单。然后余额扣除下单这步有校验,支付宝付款的那步是没有校验的,所以影响不算太大,但是还是有影响的,比如1分钱下单后,虽然是充值到了余额,但是还可以对订单进行评论之类的操作。。。

  12. 2010-01-01 00:00 todaro 白帽子 | Rank:30 漏洞数:3)

    @px1624 最近测试某站的时候也是这样。厂商越来越鬼精了,本地会有一个余额数据库,是通过校验这个来确定的,提交的时候修改一下余额,看看会不会有什么影响。