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

                                                                                    《目錄》


 

    支付漏洞,是一種很簡單的邏輯漏洞。

    世界上的公司分爲倆種,一種是還沒被 黑客 攻擊過的,另一種就是已經被 黑客 攻擊過的。

    所以企業也越來越重視 網絡安全 這塊,這樣的支付漏洞就那麼好找了.......

    但肯定還是有的,只是隱祕了一些。

    上面 “最小黑客” 的抓包技術,是很簡單的,學會使用 抓包工具:Burp Suite 即可。

 


原理:支付漏洞

     商戶網站接入支付結果有兩種方式,一種是通過瀏覽器進行跳轉通知,一種是服務器端異步通知。

 

  •                    瀏覽器跳轉基於用戶訪問的瀏覽器,如果用戶在銀行頁面支付成功後,直接關閉了頁面,並未等待銀行跳轉到支付結果頁面,那麼商戶網站就收不到支付結果的通知,導致支付結果難以處理。而且瀏覽器端數據很容易被篡改而降低安全性。

 

  •         服務器端異步通知該方式是支付公司服務器後臺直接向用戶指定的異步通知URL發送參數,採用POST或GET的方式。商戶網站接收異部參數的URL對應的程序中,要對支付公司返回的支付結果進行簽名驗證,成功後進行支付邏輯處理,如驗證金額、訂單信息是否與發起支付時一致,驗證正常則對訂單進行狀態處理或爲用戶進行網站內入賬等

        支付漏洞大概分爲:

  •      修改支付的價格,原理在案例裏
  •      修改支付狀態,    原理在案例裏
  •      修改訂單數量,    原理在案例裏
  •      修改附屬值(如優惠卷),選擇相關優惠劵後,接着修改金額大於或等於商品的價格就可以,或直接修改其爲負值進行嘗試,最後進行支付,如果對這點沒有加以驗證,那麼問題就會產生,直接支付成功。
  •      越權支付,存在 user=id(123),這種傳參時,嘗試改改id,嘗試用別人的錢包買自己的包包。
  •      無限制試用

         無論是哪一種,都是通過 抓包工具: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

 

  • §找到關鍵的數據包

             可能一個支付操作有三四個數據包,我們要對數據包進行挑選。

  • §分析數據包

             支付數據包中會包含很多的敏感信息(賬號,金額,餘額,優惠),要嘗試對數據包中的各個參數進行分析。

  • §不按套路出牌

             多去想想開發者沒有想到的地方

  • §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忘了截圖了,大家自己可以試下行不行:
 

1.jpg




 

2.jpg




 

漏洞證明:

 

7.jpg





         adultNum 和 childNum 對應成人和小孩數目,可以修改爲任意數值。抓到數據後把金額全都修改成1塊,提交後:


 

3.jpg




 

4.jpg




 

5.jpg

 

修復方案:

    大家懂得。望注意下安全,測試的時候身份證、遊客名隨便填都行~

 

 


案例修改支付狀態

   訂單完成——未完成(傻傻分不清)

  •   A 訂單 -0001 完成——B訂單 -0002 未完成,付款時嘗試把訂單B的單號給成訂單 A

 

漏洞詳情

 


披露狀態:

  • 2015-03-19: 細節已通知廠商並且等待廠商處理中
  • 2015-03-19: 廠商已經確認,細節僅向廠商公開
  • 2015-03-20: 廠商已經修復漏洞並主動公開,細節向公衆公開

 

 

簡要描述:

    17u.net 現在叫旅交匯,不知道什麼意思。

 

 

詳細說明:

Unnamed QQ Screenshot20150319114119.jpg



    不知道後臺計算的時候是按什麼計算的,總之前臺是可以通過url修改訂單,而且是不需要權限的修改。

 

 

漏洞證明:

    首先註冊一個號碼:13111112343,而後正常下單:
 

Unnamed QQ Screenshot20150319114345.jpg



      到訂單裏面點查看訂單:
 

Unnamed QQ Screenshot20150319114501.jpg



      點擊返回修改。
 

2.jpg


    點提交。
 

43.jpg


    抓包。
 

33.jpg



     重點就在這條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,這兩個經過嘗試是要與網站裏面已有的產品一樣的,所以我找了一個便宜的產品,
 

林.jpg

 

這個產品的 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塊了,

 

44.jpg


 

55.jpg


 

66.jpg



     但畢竟是預定,有人爲審覈在裏面,所以即便改了,也沒什麼大礙,但從程序上來講,感覺應該算是個bug.先這樣吧


 

修復方案:

      DUANG

 

 


案例:修改訂單數量

    一支筆 塊,買 支,或者買 -1 支 (不就等於免費了麼??)

 

漏洞詳情

 


披露狀態:

  • 2015-04-15: 細節已通知廠商並且等待廠商處理中
  • 2015-04-15: 廠商已經確認,細節僅向廠商公開
  • 2015-04-20: 廠商已經修復漏洞並主動公開,細節向公衆公開

 

簡要描述:

    同程某處支付漏洞

 

詳細說明:

1:缺陷url。

http://www.17u.net/



2:此處問題在於一些訂單可以訂大人和兒童票,我們構造-1的大人人數和正數的小孩人數使得錢數爲正,即可提交訂單成功。



3:構造訂單截圖,選取的是 88 元的票,-1 的大人,2 的小孩。



提交之後的結果:
 

tongcheng.png



4:支付寶支付金額的圖:
 

tongcheng1.png

 

漏洞證明:

    構造訂單截圖,選取的是 88 元的票,-1 的大人,2 的小孩。

 

    提交之後的結果:
 

tongcheng.png





    支付寶支付金額的圖:
 

tongcheng1.png

 

 

修復方案:

    不讓提交負數吧。

 

 


案例:無限制試用

       只需知道銀行信用卡號即可消費。

  •        比如試用的參數爲2,正常購買的參數爲 1。
  •        那麼我們購買參數2(試用),會發生什麼呢 ?

 

漏洞詳情:

  • 漏洞標題: 藝龍旅行網嚴重支付漏洞(只需知道銀行信用卡號即可消費) 

  • 相關廠商: 藝龍旅行網

  • 漏洞作者: Focusstart

  • 漏洞類型: 設計缺陷/邏輯錯誤

  • 危害等級: 高

 


披露狀態:

  • 2016-03-23: 細節已通知廠商並且等待廠商處理中
  • 2016-03-23: 廠商已查看當前漏洞內容,細節僅向廠商公開
  • 2016-03-24: 廠商已經主動忽略漏洞,細節向公衆公開

 

簡要描述:

    感謝壯丁的友情贊助,好基友,一起走。

 

詳細說明:

    首先,在藝龍隨便下了一個訂單,到支付頁面,選擇信用卡支付。

    輸入正確的卡號,有效期。

    姓名,身份證等相關信息隨便輸。
 

2.png



     居然支付成功了。

     那麼問題來了。

     說明這裏只判斷信用卡有效期即可成功支付。

     接下來就簡單了,我們只要嘗試爆破出信用卡的有效期即可。

     而後發現錯誤的有效期也能使訂單到判定支付是否成功的階段。

 

 

漏洞證明:

      所以,下多個訂單。
 

3.png



      隨便點擊一個訂單到支付頁面。

      抓包。

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=


 

5.png



      訂單 + 有效期爆破,隔幾秒放過。

      那麼訂單都會到判斷支付是否成功的階段,如果訂單支付成功,說明有效期是正確的。

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

7.png


 

6.png


 

1.jpg

 

修復方案:

    信用卡支付邏輯是不是該有 有效期 + 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) 如何提升自己在支付漏洞方面的挖掘?

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章