支付漏洞是 高风险漏洞 也属于 逻辑漏洞,通常是通过 篡改价格、数量、状态、接口、用户名等传参,从而造成 小钱够买大物 甚至可能造成 0元购买商品 等等,凡是 涉及购买、资金等方面的功能处 就有可能存在支付漏洞。
商户网站接入支付结果,有两种方式,一种是通过 浏览器进行跳转通知,一种是 服务器端异步通知。
基于用户访问的浏览器,如果用户在银行页面支付成功后,直接关闭了页面,并未等待银行跳转到支付结果页面,那么商户网站就收不到支付结果的通知,导致支付结果难以处理。而且浏览器端数据很容易被篡改而降低安全性(这种方式数据经过了客户端浏览器,极大的可能性被第三方恶意修改)
该方式是支付公司服务器后台直接向用户指定的异步通知URl发送参数,采用POST或者GET的方式。商户网站接受异部参数的URL对应的程序中,要对支付公司返回的支付结果进行签名验证,成功后进行支付逻辑处理,如验证金额、订单信息是否与发起支付时一致,验证正常则对订单进行状态处理或为用户进行网站内入账等。
支付三步曲——订购、订单、付款
三个步骤当中的随便一个步骤进行修改价格测试,如果前面两步有验证机制,那么你可在最后一步付款时进行抓包尝试修改
金额,如果没有在最后一步做好检验,那么问题就会存在,其修改的金额值可以尝试小数目或者尝试负数。
实例:
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2015-0112258
http://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2012-07293
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2016-0215059
购买成功后,重放其中的请求,竟然可以多次购买商品。
实例:
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2012-05173
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2011-03009
没有对购买的数量参数进行限制,导致可随意修改,最常见的修改方式是改成 负数或者小数。
实例:
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2015-0108134
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2012-07471
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2012-07738
没有对支付状态的值跟实际订单支付状态进行校验,导致点击支付时抓包修改决定支付或未支付的参数为支付状态的值从而达到支付成功。
实例:
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2015-0102292
(1)修改优惠劵金额/数量
(2)修改积分金额
(3)修改运费金额
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2015-0156253
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2015-0139556
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2013-019761
通过修改一些 特殊传参(如:id,username,openid) 来达到用他人的资金来干购买自己的商品。
实例:
https://forum.butian.net/share/1125
通过修改 特殊传参(如:id,pay,test) 来达到无限制试用。
https://wy.zone.ci/bug_detail.php?wybug_id=wooyun-2016-0188155
在数据库的余额字段更新之前,同时发起多次兑换积分或购买商品请求,从中获取利益。
详解:
并发请求导致的业务处理安全风险及解决方案
1、找到关键的数据包
可能一个支付操作有三四个数据包,我们要对数据包进行挑选。
2、分析数据包
支付数据包中会包含很多的敏感信息(账号,金额,余额,优惠),要尝试对数据包中的各个参数进行分。析。
3、不按套路出牌
多去想想开发者没有想到的地方。
4、pc端尝试过,wap端也看看,app也试试
1、在后端检查订单的每一个值,包括支付状态;
2、校验价格、数量参数,比如产品数量只能为整数,并限制最大购买数量 ;
3、与第三方支付平台检查,实际支付的金额是否与订单金额一致;
4、如果给用户退款,要使用原路、原订单退回。比如:退押金,按用户原支付订单原路退回;
5、MD5 加密、解密、数字签名及验证,这个可以有效的避免数据修改,重放攻击中的各种问题;
6、金额超过指定值,进行人工审核等。
本文作者:无名草talent, 转载请注明来自FreeBuf.COM
侵权请私聊公众号删文
热文推荐
欢迎关注LemonSec
觉得不错点个“赞”、“在看”