《目录》
- 原理:支付漏洞
- 实战:无限话费
- 如何挖掘
- 案例:修改支付的价格
- 案例:修改支付状态
- 案例:修改订单数量
- 案例:无限制试用
- 如何防御
- 支付漏洞常见问题汇总
支付漏洞,是一种很简单的逻辑漏洞。
世界上的公司分为俩种,一种是还没被 黑客 攻击过的,另一种就是已经被 黑客 攻击过的。
所以企业也越来越重视 网络安全 这块,这样的支付漏洞就那么好找了.......
但肯定还是有的,只是隐秘了一些。
上面 “最小黑客” 的抓包技术,是很简单的,学会使用 抓包工具:Burp Suite 即可。
商户网站接入支付结果有两种方式,一种是通过浏览器进行跳转通知,一种是服务器端异步通知。
支付漏洞大概分为:
无论是哪一种,都是通过 抓包工具:Burp Suite 把被拦截到的数据包改成自己想要的数据(价格)。
非常非常的简单,只需要会使用抓包工具:Burp Suite 即可。
靶场url:xxx。
本文仅展示最简单的一种,深入见实战后面的案例(不需要懂代码,会用 Burp Suite 就行)。
start,先注册自己的账号。
支付漏洞,一般都出现于 购买、充值 的地方。
点进去,如图。
金额为 0.00 RMB,到商品中心看看,刷一波......
点击立刻购买,发现账号里没有 RMB买不了。
哼,一气之下把购买商品的数量改成了 负数。
点击提交订单。
网页报错了,而且惊喜的是您回到账户中心就发现钱到账了。
这是因为报错的同时,程序也在线执行了。
那为什么改为 负数 就有支付漏洞呢 ???
我们购买 CF 点卷时,程序的逻辑是这样的。
我的账号余额是 0.00 ,当前商品的价格是 9.2,我买的数量是 -1。
程序计算的就是:0.00 - (9.2 * -1)
= 0.00 - (- 9.2)
= 0.00 + 9.2 ( 减减就是加 )
= 9.2
可为啥我的是 18.40 呢,您大可猜一下 ??
下面的支付漏洞会难一些,不需要代码审计( 即不需要编程基础,支付漏洞都很简单 )。
抓包工具:Burp Suite。
可能一个支付操作有三四个数据包,我们要对数据包进行挑选。
支付数据包中会包含很多的敏感信息(账号,金额,余额,优惠),要尝试对数据包中的各个参数进行分析。
多去想想开发者没有想到的地方
挖到某个 网站/APP 的支付漏洞,强烈建议数额不要超过 10 RMB,渗透测试成功后火速提交,不要留着,小心带上 玫瑰金手铐。
转载了 4 篇支付漏洞方面的文章,写的很好。
因为某些原因以后可能就看不到了,所以我先搬过来。
- 转载:《中国国旅一元买任意张数旅游票》
- 转载:《同程旅交汇低价支付高价订单订单随意修改》
- 转载:《同程旅游网某处支付漏洞》
- 转载:《艺龙旅行网严重支付漏洞》
按照顺序,依次? 展示。
支付三步曲——订购、订单、付款。
漏洞详情
- 漏洞标题: 中国国旅一元买任意张数旅游票(支付逻辑漏洞)
- 相关厂商: 中国国旅
- 漏洞作者: 昊昊
- 漏洞类型: 网络设计缺陷/逻辑错误
- 危害等级: 高
披露状态:
简要描述:
中国国旅一元买任意张数旅游票(支付逻辑漏洞)
详细说明:
中国国旅买票的时候可以通过 burp 抓包,修改金额和人数,提交过后可以用 一元买 N 张票。
以下是详细修改数据提交过后的截图,burp忘了截图了,大家自己可以试下行不行:
漏洞证明:
adultNum 和 childNum 对应成人和小孩数目,可以修改为任意数值。抓到数据后把金额全都修改成1块,提交后:
修复方案:
大家懂得。望注意下安全,测试的时候身份证、游客名随便填都行~
订单完成——未完成(傻傻分不清)
漏洞详情
漏洞标题: 同程旅交汇低价支付高价订单订单随意修改(另种支付漏洞隐患)
相关厂商: 苏州同程旅游网络科技有限公司
漏洞作者: 纳米翡翠
漏洞类型: 设计缺陷/逻辑错误
危害等级: 中
披露状态:
简要描述:
17u.net 现在叫旅交汇,不知道什么意思。
详细说明:
不知道后台计算的时候是按什么计算的,总之前台是可以通过url修改订单,而且是不需要权限的修改。
漏洞证明:
首先注册一个号码:13111112343,而后正常下单:
到订单里面点查看订单:
点击返回修改。
点提交。
抓包。
重点就在这条url:
http://www.17u.net/WDHandler/LineOrder.ashx?action=updateLine&Platform=net&lineid=4593689&b2bMemberId=207967&TotalPrice=2750.00&TotalMan=1&TotalChild=0&b2cname=13111112343&b2cphone=13111112343&b2cemail=&remark=&dateText=2015-3-19%200:00:00&orderid=254831
经过测试,这条url,可以在不登录的情况下更新订单,也就是只要知道 orderid,就可以更新订单,更重要的是 orderid 是自增值,很容易推测 orderid 号。
接下来,我们来更改我刚才下的单,从上面的url里面有两个地方一个是lineid,一个是totalprice,这两个经过尝试是要与网站里面已有的产品一样的,所以我找了一个便宜的产品,
这个产品的 id 是1806901,价格是 50,
而后拿出上面记录的 url,修改
http://www.17u.net/WDHandler/LineOrder.ashx?action=updateLine&Platform=net&lineid=1806901&b2bMemberId=207967&TotalPrice=50&TotalMan=1&TotalChild=0&b2cname=13111112343&b2cphone=13111112343&b2cemail=&remark=&dateText=2015-3-19%200:00:00&orderid=254831
而后执行一下,随便在哪执行都行,而后再到订单里面看我们的订单,已经变成50块了,
但毕竟是预定,有人为审核在里面,所以即便改了,也没什么大碍,但从程序上来讲,感觉应该算是个bug.先这样吧
修复方案:
DUANG
一支笔 1 块,买 0 支,或者买 -1 支 (不就等于免费了么??)
漏洞详情
- 漏洞标题: 同程旅游网某处支付漏洞
- 相关厂商: 苏州同程旅游网络科技有限公司
- 漏洞作者: MayIKissYou
- 漏洞类型: 设计缺陷/逻辑错误
- 危害等级: 高
披露状态:
简要描述:
同程某处支付漏洞
详细说明:
1:缺陷url。
http://www.17u.net/
2:此处问题在于一些订单可以订大人和儿童票,我们构造-1的大人人数和正数的小孩人数使得钱数为正,即可提交订单成功。
3:构造订单截图,选取的是 88 元的票,-1 的大人,2 的小孩。
提交之后的结果:
4:支付宝支付金额的图:
漏洞证明:
构造订单截图,选取的是 88 元的票,-1 的大人,2 的小孩。
提交之后的结果:
支付宝支付金额的图:
修复方案:
不让提交负数吧。
只需知道银行信用卡号即可消费。
漏洞详情:
漏洞标题: 艺龙旅行网严重支付漏洞(只需知道银行信用卡号即可消费)
相关厂商: 艺龙旅行网
漏洞作者: Focusstart
漏洞类型: 设计缺陷/逻辑错误
危害等级: 高
披露状态:
简要描述:
感谢壮丁的友情赞助,好基友,一起走。
详细说明:
首先,在艺龙随便下了一个订单,到支付页面,选择信用卡支付。
输入正确的卡号,有效期。
姓名,身份证等相关信息随便输。
居然支付成功了。
那么问题来了。
说明这里只判断信用卡有效期即可成功支付。
接下来就简单了,我们只要尝试爆破出信用卡的有效期即可。
而后发现错误的有效期也能使订单到判定支付是否成功的阶段。
漏洞证明:
所以,下多个订单。
随便点击一个订单到支付页面。
抓包。
POST /epay/isajax/CreditCardExtend/Save HTTP/1.1
x-requested-with: XMLHttpRequest
Accept-Language: zh-cn
Referer: https://secure.elong.com/epay/cn/creditcardextend/433877263696341615train
Accept: application/json, text/javascript, */*
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
Host: secure.elong.com
Content-Length: 360
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: SessionGuid=42ff44d5-95e9-4a84-a57b-0199c4a28a59; com.eLong.CommonService.OrderFromCookieInfo=Pkid=50&Parentid=50000&Coefficient=0.0&Status=1&Priority=8000&Makecomefrom=0&Savecookies=0&Cookiesdays=0&Isusefparam=0&Orderfromtype=1; s_cc=true; s_sq=elongcom%3D%2526pid%253Dmy.elong.com%25252Ftrain%25252Ftrainorder_cn.html%2526pidt%253D1%2526oid%253Dhttp%25253A%25252F%25252Fmy.elong.com%25252Ftrain%25252Ftrainorder_cn.html%25253Frnd%25253D20160323142748598%252523%25253F%2526ot%253DA%2526oi%253D413; CookieGuid=bf5e468c-2c0e-4e32-a174-c6b00a59600b; Esid=72832668-11ae-4cf6-8486-f2a53dda7c15; member=********; Lgid=LRpRtrsC3gsExwGXhEk%2flpaR3waA7McUH7SGryL5%2fSFdUfZTcxrrKJN7gDYF38TJf%2b6813mw0I7%2bEqLpl1r2dNM00g3TNSUIsbfjUZc3xAoySWAQkZq3Hr3%2fuLPImoK3; s_visit=1; route=d99f2606f97cd9d480bdb1efdeca5346; ASP.NET_SessionId=go0f0j550ckcs055bbbdmvu1; TLTCNT=CHG-OWEBTJ10000000000077396
language=cn&id=§433877263696341615train§&paymentInfo.CreditCardNumber=******&paymentInfo.Cardholder=%E6%B5%8B%E8%AF%95&paymentInfo.FirstName=&paymentInfo.MiddleName=&paymentInfo.LastName=&paymentInfo.CardValidity=§2022-1§&paymentInfo.CertificateTypeID=2&paymentInfo.CertificateNumber=321321&paymentInfo.CheckedLast4Num=false&paymentInfo.IdOfCardsHistory=
订单 + 有效期爆破,隔几秒放过。
那么订单都会到判断支付是否成功的阶段,如果订单支付成功,说明有效期是正确的。
成功爆破出信用卡有效期并成功支付。
修复方案:
信用卡支付逻辑是不是该有 有效期 + CVV码 + 手机验证码组成 ??
(1) 什么是支付漏洞?
- 支付漏洞属于逻辑漏洞的一种,是和支付的业务有关,支付业务中出现的逻辑漏洞全部属于支付漏洞。
(2) 支付漏洞危害大吗?
- 支付业务一般和资金挂钩,如果支付宝存在支付漏洞,我可以不断的刷钱,您觉得危害如何?
(3) 支付漏洞常见吗?
- 支付漏洞还是比较常见的,特别是一些小商城、小网站、非法网站容易出现一些支付漏洞
(4) 支付漏洞测试需要负法律责任吗?
- 支付漏洞测试用较小的金额,一般控制在10块内,金额不要过大,而且测试成功后火速提交,不要留着。
(5) 快捷支付的原理?
- 快捷支付实际上就是跳转到支付页面,而后您付钱,而后商家获取到支付结果(早期由依赖浏览器跳转的支付、后面多为异步传输(付钱成功后,支付商和商家有自己的联系通道,不依靠客户浏览器跳转))
(6) 支付漏洞需要代码审计吗?
- 不需要,而且一般而言您也没有目标源码,无法进行审计
(7) 支付漏洞挖掘的核心思想是什么?
- 不仅仅是支付漏洞,在逻辑漏洞中,要有发散性思维,多想一些别人一般不会想到的操作,比如支付漏洞,买几个商品,而后在数量那里有负数,而后将最终价格变为 0
(8) 常见支付漏洞:
- 修改支付价格、修改支付状态、修改订单数量、修改优惠价优惠价格和使用限制、越权支付、无限试用
(9) 修改支付价格具体操作?
- 修改支付价格,主要是通过抓包,比如您买一个电脑,标价6999,而后您发现数据包里面有6999的传参,而后我改成了6.999,而后跳转到支付页面,我付了6.999将这个电脑买下,也可以把金额改为负数
(10) 修改支付状态具体操作?
- 比如您购买一个1000的商品,而后又购买一个10块的商品,两个订单号不同,而后您抓包,将1000块支付发送的数据包的订单号改为10块,而后付了10块钱,发现商品买到手了
(11) 修改订单数量具体操作?
- 订单数量的操作一般都是负数,买一个贵的,几个便宜的商品,而后贵的商品的价格为-1,于是乎这个贵的商品的价格就是个负数,比如 -8999,而 后我再买几个商品,加起来也是8999,那么计算总金额的时候就是 -8999+8999 == 0 ,于是乎 0 元购买了
(12) 修改优惠卷优惠价格和使用限制具体操作?
- 这里出发点,不在于商品本身了,核心在于优惠卷,比如优惠卷价格修改,比如使用N张优惠卷
(13) 越权支付具体操作?
- 越权支付,修改支付金额的用户id号,扣其他用户的钱
(14) 支付漏洞仅仅在WEB端有吗?
- 那里都有,不仅仅WEB,有支付的方面都可能有,这个要开阔思维,我上次出去吃个烧烤,扫码点单顺手一个XSS
(14) 如果传参加密了怎么办?
- 看到第一件事是别慌,加密不代表杜绝漏洞了,先看看能不能找到加密方式,而后买不同价格东西,买同价格的东西,去比对数据包
(15) 如何防御支付漏洞?
- 后端检测一切传参、金额大的话人工审核、传参中不涉及金额、加密传参
(16) 越权支付漏洞怎么预防?
- 做好权限控制呗
(17) 靶场支付漏洞怎么做?
- 修改支付价格和修改支付数量都行
(18) 支付漏洞和其他逻辑漏洞的核心是什么?
- 控制参数
(19) 有没有一些神奇案例?
- 以前艺龙似乎出现一个支付漏洞,只需要信用卡账号有信用卡有效期就可以直接消费。
(20) 如何提升自己在支付漏洞方面的挖掘?
- 《乌云支付漏洞大全》。