[6] 支付漏洞( 0 元购 )

                                                                                    《目录》

  • 原理:支付漏洞
  • 实战:无限话费
  • 如何挖掘
  • 案例:修改支付的价格
  • 案例:修改支付状态
  • 案例:修改订单数量
  • 案例:无限制试用
  • 如何防御
  • 支付漏洞常见问题汇总

 

[6] 支付漏洞( 0 元购 )_第1张图片

    支付漏洞,是一种很简单的逻辑漏洞。

    世界上的公司分为俩种,一种是还没被 黑客 攻击过的,另一种就是已经被 黑客 攻击过的。

    所以企业也越来越重视 网络安全 这块,这样的支付漏洞就那么好找了.......

    但肯定还是有的,只是隐秘了一些。

    上面 “最小黑客” 的抓包技术,是很简单的,学会使用 抓包工具:Burp Suite 即可。

 


原理:支付漏洞

     商户网站接入支付结果有两种方式,一种是通过浏览器进行跳转通知,一种是服务器端异步通知。

 

  •                    浏览器跳转基于用户访问的浏览器,如果用户在银行页面支付成功后,直接关闭了页面,并未等待银行跳转到支付结果页面,那么商户网站就收不到支付结果的通知,导致支付结果难以处理。而且浏览器端数据很容易被篡改而降低安全性。

 

  •         服务器端异步通知该方式是支付公司服务器后台直接向用户指定的异步通知URL发送参数,采用POST或GET的方式。商户网站接收异部参数的URL对应的程序中,要对支付公司返回的支付结果进行签名验证,成功后进行支付逻辑处理,如验证金额、订单信息是否与发起支付时一致,验证正常则对订单进行状态处理或为用户进行网站内入账等

        支付漏洞大概分为:

  •      修改支付的价格,原理在案例里
  •      修改支付状态,    原理在案例里
  •      修改订单数量,    原理在案例里
  •      修改附属值(如优惠卷),选择相关优惠劵后,接着修改金额大于或等于商品的价格就可以,或直接修改其为负值进行尝试,最后进行支付,如果对这点没有加以验证,那么问题就会产生,直接支付成功。
  •      越权支付,存在 user=id(123),这种传参时,尝试改改id,尝试用别人的钱包买自己的包包。
  •      无限制试用

         无论是哪一种,都是通过 抓包工具:Burp Suite  把被拦截到的数据包改成自己想要的数据(价格)。

         非常非常的简单,只需要会使用抓包工具:Burp Suite  即可。

 

 


实战:无限话费(点卷)

    靶场url:xxx。

    本文仅展示最简单的一种,深入见实战后面的案例(不需要懂代码,会用 Burp Suite 就行)。

 

    start,先注册自己的账号。

[6] 支付漏洞( 0 元购 )_第2张图片

    

     支付漏洞,一般都出现于 购买、充值 的地方。

[6] 支付漏洞( 0 元购 )_第3张图片

     点进去,如图。

[6] 支付漏洞( 0 元购 )_第4张图片

     金额为 0.00 RMB,到商品中心看看,刷一波......

[6] 支付漏洞( 0 元购 )_第5张图片

 

      点击立刻购买,发现账号里没有 RMB买不了。

[6] 支付漏洞( 0 元购 )_第6张图片

     哼,一气之下把购买商品的数量改成了 负数。

[6] 支付漏洞( 0 元购 )_第7张图片

     点击提交订单。

[6] 支付漏洞( 0 元购 )_第8张图片

     网页报错了,而且惊喜的是您回到账户中心就发现钱到账了。

[6] 支付漏洞( 0 元购 )_第9张图片

     这是因为报错的同时,程序也在线执行了。

     那为什么改为 负数 就有支付漏洞呢 ???

     我们购买 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。

 

  • §找到关键的数据包

             可能一个支付操作有三四个数据包,我们要对数据包进行挑选。

  • §分析数据包

             支付数据包中会包含很多的敏感信息(账号,金额,余额,优惠),要尝试对数据包中的各个参数进行分析。

  • §不按套路出牌

             多去想想开发者没有想到的地方

  • §pc 端尝试过,wap 端也看看,app 也试试。

 

        挖到某个 网站/APP 的支付漏洞,强烈建议数额不要超过 10 RMB,渗透测试成功后火速提交,不要留着,小心带上 玫瑰金手铐

 

 

转载了 4 篇支付漏洞方面的文章,写的很好。

因为某些原因以后可能就看不到了,所以我先搬过来。

  • 转载:《中国国旅一元买任意张数旅游票》
  • 转载:《同程旅交汇低价支付高价订单订单随意修改》
  • 转载:《同程旅游网某处支付漏洞》
  • 转载:《艺龙旅行网严重支付漏洞》

    按照顺序,依次? 展示。

 


案例:修改支付的价格

    支付三步曲——订购、订单、付款。

  •  三个步骤当中的随便一个步骤进行修改价格测试,如果前面俩步有验证机制,那么您可在最后一步付款时进行抓包尝试修改金额,如果没有在最后一步做好检验,那么问题就会存在,其修改的金额值您可以尝试小数目或者尝试负数。

 

漏洞详情

  • 漏洞标题: 中国国旅一元买任意张数旅游票(支付逻辑漏洞)
  • 相关厂商: 中国国旅
  • 漏洞作者: 昊昊
  • 漏洞类型: 网络设计缺陷/逻辑错误
  • 危害等级: 高

 

 

披露状态:

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

 

简要描述:

     中国国旅一元买任意张数旅游票(支付逻辑漏洞)

 

详细说明:

     中国国旅买票的时候可以通过 burp 抓包,修改金额和人数,提交过后可以用 一元买 N 张票

     以下是详细修改数据提交过后的截图,burp忘了截图了,大家自己可以试下行不行:
 

[6] 支付漏洞( 0 元购 )_第10张图片




 

[6] 支付漏洞( 0 元购 )_第11张图片




 

漏洞证明:

 

[6] 支付漏洞( 0 元购 )_第12张图片





         adultNum 和 childNum 对应成人和小孩数目,可以修改为任意数值。抓到数据后把金额全都修改成1块,提交后:


 

[6] 支付漏洞( 0 元购 )_第13张图片




 

[6] 支付漏洞( 0 元购 )_第14张图片




 

[6] 支付漏洞( 0 元购 )_第15张图片

 

修复方案:

    大家懂得。望注意下安全,测试的时候身份证、游客名随便填都行~

 

 


案例修改支付状态

   订单完成——未完成(傻傻分不清)

  •   A 订单 -0001 完成——B订单 -0002 未完成,付款时尝试把订单B的单号给成订单 A

 

漏洞详情

  • 漏洞标题: 同程旅交汇低价支付高价订单订单随意修改(另种支付漏洞隐患)

  • 相关厂商: 苏州同程旅游网络科技有限公司

  • 漏洞作者: 纳米翡翠

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

  • 危害等级: 中

 


披露状态:

  • 2015-03-19: 细节已通知厂商并且等待厂商处理中
  • 2015-03-19: 厂商已经确认,细节仅向厂商公开
  • 2015-03-20: 厂商已经修复漏洞并主动公开,细节向公众公开

 

 

简要描述:

    17u.net 现在叫旅交汇,不知道什么意思。

 

 

详细说明:

[6] 支付漏洞( 0 元购 )_第16张图片



    不知道后台计算的时候是按什么计算的,总之前台是可以通过url修改订单,而且是不需要权限的修改。

 

 

漏洞证明:

    首先注册一个号码:13111112343,而后正常下单:
 

[6] 支付漏洞( 0 元购 )_第17张图片



      到订单里面点查看订单:
 

[6] 支付漏洞( 0 元购 )_第18张图片



      点击返回修改。
 

[6] 支付漏洞( 0 元购 )_第19张图片


    点提交。
 

[6] 支付漏洞( 0 元购 )_第20张图片


    抓包。
 

[6] 支付漏洞( 0 元购 )_第21张图片



     重点就在这条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,这两个经过尝试是要与网站里面已有的产品一样的,所以我找了一个便宜的产品,
 

[6] 支付漏洞( 0 元购 )_第22张图片

 

这个产品的 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块了,

 

[6] 支付漏洞( 0 元购 )_第23张图片


 

[6] 支付漏洞( 0 元购 )_第24张图片


 

[6] 支付漏洞( 0 元购 )_第25张图片



     但毕竟是预定,有人为审核在里面,所以即便改了,也没什么大碍,但从程序上来讲,感觉应该算是个bug.先这样吧


 

修复方案:

      DUANG

 

 


案例:修改订单数量

    一支笔 块,买 支,或者买 -1 支 (不就等于免费了么??)

 

漏洞详情

  • 漏洞标题: 同程旅游网某处支付漏洞
  • 相关厂商: 苏州同程旅游网络科技有限公司
  • 漏洞作者: MayIKissYou
  • 漏洞类型: 设计缺陷/逻辑错误
  • 危害等级: 高

 


披露状态:

  • 2015-04-15: 细节已通知厂商并且等待厂商处理中
  • 2015-04-15: 厂商已经确认,细节仅向厂商公开
  • 2015-04-20: 厂商已经修复漏洞并主动公开,细节向公众公开

 

简要描述:

    同程某处支付漏洞

 

详细说明:

1:缺陷url。

http://www.17u.net/



2:此处问题在于一些订单可以订大人和儿童票,我们构造-1的大人人数和正数的小孩人数使得钱数为正,即可提交订单成功。



3:构造订单截图,选取的是 88 元的票,-1 的大人,2 的小孩。



提交之后的结果:
 

[6] 支付漏洞( 0 元购 )_第26张图片



4:支付宝支付金额的图:
 

[6] 支付漏洞( 0 元购 )_第27张图片

 

漏洞证明:

    构造订单截图,选取的是 88 元的票,-1 的大人,2 的小孩。

 

    提交之后的结果:
 

[6] 支付漏洞( 0 元购 )_第28张图片





    支付宝支付金额的图:
 

[6] 支付漏洞( 0 元购 )_第29张图片

 

 

修复方案:

    不让提交负数吧。

 

 


案例:无限制试用

       只需知道银行信用卡号即可消费。

  •        比如试用的参数为2,正常购买的参数为 1。
  •        那么我们购买参数2(试用),会发生什么呢 ?

 

漏洞详情:

  • 漏洞标题: 艺龙旅行网严重支付漏洞(只需知道银行信用卡号即可消费) 

  • 相关厂商: 艺龙旅行网

  • 漏洞作者: Focusstart

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

  • 危害等级: 高

 


披露状态:

  • 2016-03-23: 细节已通知厂商并且等待厂商处理中
  • 2016-03-23: 厂商已查看当前漏洞内容,细节仅向厂商公开
  • 2016-03-24: 厂商已经主动忽略漏洞,细节向公众公开

 

简要描述:

    感谢壮丁的友情赞助,好基友,一起走。

 

详细说明:

    首先,在艺龙随便下了一个订单,到支付页面,选择信用卡支付。

    输入正确的卡号,有效期。

    姓名,身份证等相关信息随便输。
 

[6] 支付漏洞( 0 元购 )_第30张图片



     居然支付成功了。

     那么问题来了。

     说明这里只判断信用卡有效期即可成功支付。

     接下来就简单了,我们只要尝试爆破出信用卡的有效期即可。

     而后发现错误的有效期也能使订单到判定支付是否成功的阶段。

 

 

漏洞证明:

      所以,下多个订单。
 

[6] 支付漏洞( 0 元购 )_第31张图片



      随便点击一个订单到支付页面。

      抓包。

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=


 

[6] 支付漏洞( 0 元购 )_第32张图片



      订单 + 有效期爆破,隔几秒放过。

      那么订单都会到判断支付是否成功的阶段,如果订单支付成功,说明有效期是正确的。

      成功爆破出信用卡有效期并成功支付。
 

[6] 支付漏洞( 0 元购 )_第33张图片


 

[6] 支付漏洞( 0 元购 )_第34张图片


 

[6] 支付漏洞( 0 元购 )_第35张图片

 

修复方案:

    信用卡支付逻辑是不是该有 有效期 + CVV码 + 手机验证码组成 ??

 

 


如何防御

  • § 后端检查每一项值,包括支付状态。
  •  
  • § 校验价格、数量参数,比如产品数量只能为正整数,并限制购买数量。
  •  
  • § 与第三方支付平台检查,实际支付的金额是否与订单金额一致。
  •  
  • § 支付参数进行 MD5 加密、解密、数字签名及验证,这个可以有效的避免数据修改,重放攻击中的各种问题。
  •  
  • § 金额超过阈值,进行人工审核。

 

 


支付漏洞常见问题汇总

 

   (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) 如何提升自己在支付漏洞方面的挖掘?

  •       《乌云支付漏洞大全》。

 

 

 

 

你可能感兴趣的:(#,Web安全)