◎歡迎參與討論,請(qǐng)?jiān)谶@里發(fā)表您的看法、交流您的觀點(diǎn)。
支付漏洞一直以來(lái)就是是高風(fēng)險(xiǎn),對(duì)企業(yè)來(lái)說(shuō)危害很大,對(duì)用戶(hù)來(lái)說(shuō)同樣危害也大。就比如我用他人賬戶(hù)進(jìn)行消費(fèi),這也屬于支付漏洞中的越權(quán)問(wèn)題。那么支付漏洞一般存在在哪些方面呢,根據(jù)名字就知道,凡是涉及購(gòu)買(mǎi)、資金等方面的功能處就有可能存在支付問(wèn)題。本文章將分類(lèi)來(lái)進(jìn)行講述支付漏洞當(dāng)中的那些思路。

首先說(shuō)下支付問(wèn)題的思路
0|10x01 修改支付價(jià)格
在支付當(dāng)中,購(gòu)買(mǎi)商品一般分為三步驟:訂購(gòu)、確認(rèn)信息、付款。
那么這個(gè)修改價(jià)格具體是修改哪一步時(shí)的價(jià)格呢?在我看來(lái),你可以在這三個(gè)步驟當(dāng)中的隨便一個(gè)步驟進(jìn)行修改價(jià)格測(cè)試,如果前面兩步有驗(yàn)證機(jī)制,那么你可在最后一步付款時(shí)進(jìn)行抓包嘗試修改金額,如果沒(méi)有在最后一步做好檢驗(yàn),那么問(wèn)題就會(huì)存在,其修改的金額值你可以嘗試小數(shù)目或者嘗試負(fù)數(shù)。
這里我找到了相關(guān)例子:
①:https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=8236
②:https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=21478
③:http://www.anquan.us/static/bugs/wooyun-2016-0174748.html
0|20x02 修改支付狀態(tài)
這個(gè)問(wèn)題我隱約的遇到過(guò),之前在找相關(guān)資料的時(shí)候發(fā)現(xiàn)了一篇文章講的是修改支付狀態(tài)為已支付狀態(tài)這樣的思路,然后勾起了我的回想,這個(gè)問(wèn)題是沒(méi)有對(duì)支付狀態(tài)的值跟實(shí)際訂單支付狀態(tài)進(jìn)行校驗(yàn),導(dǎo)致點(diǎn)擊支付時(shí)抓包修改決定支付或未支付的參數(shù)為支付狀態(tài)的值從而達(dá)到支付成功。
這里是一個(gè)例子,雖然其文章作者測(cè)試失敗了,但我覺(jué)得思路是非常不錯(cuò)的,例子:
①:https://bbs.ichunqiu.com/forum.php?mod=viewthread&tid=28151
0|30x03 修改購(gòu)買(mǎi)數(shù)量
在支付的過(guò)程中,數(shù)量也同時(shí)決定著價(jià)格,比如:1個(gè)數(shù)量商品對(duì)應(yīng)的是100,2個(gè)數(shù)據(jù)就是200,那么當(dāng)你修改這個(gè)值數(shù)量值為負(fù)數(shù)時(shí),那么其金額也會(huì)變?yōu)樨?fù)數(shù),最后就會(huì)導(dǎo)致支付問(wèn)題的產(chǎn)生。
0|40x04 修改附屬值
這里是我自己想的一個(gè)詞,比如在很多購(gòu)買(mǎi)的時(shí)候都可以利用積分或者優(yōu)惠劵等等進(jìn)行代替金額付款,那么就容易存在問(wèn)題。在這里我把附屬值分為幾類(lèi)進(jìn)行講述。
①:修改優(yōu)惠劵金額
優(yōu)惠劵其基本都是優(yōu)惠一半,一般用優(yōu)惠劵進(jìn)行消費(fèi)一般出現(xiàn)在第二個(gè)步驟當(dāng)中:確認(rèn)購(gòu)買(mǎi)信息,在這個(gè)步驟頁(yè)面當(dāng)中,你可以選擇相關(guān)優(yōu)惠劵,然后直接修改金額大于或等于商品的價(jià)格就可以,或者直接修改其為負(fù)值進(jìn)行嘗試,最后進(jìn)行支付,如果對(duì)這點(diǎn)沒(méi)有加以驗(yàn)證,那么問(wèn)題就會(huì)產(chǎn)生,直接支付成功。
②:修改優(yōu)惠劵金額及業(yè)務(wù)邏輯問(wèn)題
可能你看到這個(gè)標(biāo)題會(huì)想到,你不是上一個(gè)講的就是這個(gè)修改優(yōu)惠劵金額的問(wèn)題嘛?為什么還要再講一遍這個(gè)?請(qǐng)繼續(xù)看!
之前遇到過(guò)這個(gè)漏洞,這個(gè)漏洞也是邏輯問(wèn)題導(dǎo)致了成功利用,同樣在是在第二部確認(rèn)購(gòu)買(mǎi)信息當(dāng)中有可選擇優(yōu)惠劵進(jìn)行支付,但是,當(dāng)你修改其優(yōu)惠劵值為任意值或負(fù)值想要支付的時(shí)候,會(huì)回顯支付失敗,或者金額有誤等一些提示,可能這時(shí)很多白帽子會(huì)很失望然后就會(huì)去其它點(diǎn)找問(wèn)題了,但當(dāng)你找到個(gè)人中心,點(diǎn)擊訂單詳情,如果存在這個(gè)邏輯問(wèn)題,那么此時(shí)在你剛剛修改優(yōu)惠劵金額后點(diǎn)擊下一步支付的時(shí)候,其實(shí)這時(shí)候就已經(jīng)產(chǎn)生了訂單了,你在訂單詳情內(nèi)就可以看到支付金額為0,因?yàn)槟銊倓傂薷牧藘?yōu)惠劵金額嘛,然后你點(diǎn)擊支付就可以支付成功。
當(dāng)然,這里還要說(shuō)下小技巧,有可能會(huì)支付失敗,但是如果你找到的這個(gè)問(wèn)題是一個(gè)一般業(yè)務(wù)分站點(diǎn),如果有自帶的一個(gè)錢(qián)包功能,那么你就可以利用這個(gè)只帶的錢(qián)包功能去支付這個(gè)訂單,而不要利用其它支付類(lèi)型,那么就可以支付成功!
③:無(wú)限爆破使用優(yōu)惠劵
有些廠商不注意優(yōu)惠劵過(guò)期時(shí)間,這個(gè)時(shí)候就可以用抓包改包的方法,通過(guò)修改ID驗(yàn)證信息來(lái)重復(fù)領(lǐng)取優(yōu)惠劵
相關(guān)例子:http://wooyun.jozxing.cc/static/bugs/wooyun-2013-033166.html
http://wooyun.jozxing.cc/static/bugs/wooyun-2015-0107744.html
④:修改積分金額
有些網(wǎng)站有積分,比如你消費(fèi)多少,評(píng)論多少就可以擁有一定的積分?jǐn)?shù)量,這個(gè)積分可以在你付款的時(shí)候進(jìn)行折扣其訂單金額,如果這個(gè)沒(méi)有做好積分金額的校驗(yàn),那么當(dāng)你在支付當(dāng)中選擇用積分為賬戶(hù)減一些金額的時(shí)候,可以抓包修改其積分金額為任意數(shù)或負(fù)金額,然后可0元支付成功。
相關(guān)例子:http://www.anquan.us/static/bugs/wooyun-2015-0139556.html
http://wooyun.jozxing.cc/static/bugs/wooyun-2015-0135459.html
0|50x05 修改支付接口
比如一些網(wǎng)站支持很多種支付,比如自家的支付工具,第三方的支付工具,然后每個(gè)支付接口值不一樣,如果邏輯設(shè)計(jì)不當(dāng),當(dāng)我隨便選擇一個(gè)點(diǎn)擊支付時(shí)進(jìn)行抓包,然后修改其支付接口為一個(gè)不存在的接口,如果沒(méi)做好不存在接口相關(guān)處理,那么此時(shí)就會(huì)支付成功。
0|60x06 多重替換支付
以前好像也看到過(guò)相關(guān)的例子,首先去產(chǎn)生兩個(gè)訂單,這兩個(gè)訂單商品是不一樣的,其價(jià)格不一樣,如果服務(wù)端沒(méi)有做好這相關(guān)的驗(yàn)證,那么在支付的過(guò)程當(dāng)中抓包,修改其訂單值為另一個(gè)訂單值,最后支付,這時(shí)就可以用訂單一的支付價(jià)格買(mǎi)到訂單而的商品。
0|70x07 重復(fù)支付
這個(gè)其實(shí)只是支付當(dāng)中的一個(gè)別類(lèi),但是這個(gè)思路新穎,所以我就列了出來(lái),比如一些交易市場(chǎng)有一類(lèi)似于試用牌子或者其它,這個(gè)試用牌子可以依靠簽到獲得,而這個(gè)牌子的作用可以去試用一些商品,在你進(jìn)行試用的時(shí)候會(huì)扣掉你的試用牌子,當(dāng)你試用完成或者主動(dòng)取消試用時(shí),試用牌子會(huì)返回到賬戶(hù)當(dāng)中,你知道,簽到得到的牌子肯定很少,且如果想試用好一點(diǎn)的商品那么牌子的數(shù)量就尤為重要了。
這里的問(wèn)題就是如果沒(méi)有進(jìn)行對(duì)訂單多重提交的校驗(yàn),那么就可導(dǎo)致無(wú)限制刷牌子,比如,你試用時(shí)抓包,然后你每次試用都會(huì)產(chǎn)生一個(gè)訂單號(hào),然后利用剛抓到的數(shù)據(jù)包進(jìn)行批量提交,你就可以看到每次提交的訂單號(hào)不一樣,然后這時(shí)你再看訂單可以看到同一個(gè)商品的無(wú)數(shù)訂單,但試用牌子數(shù)只扣了你第一個(gè)試驗(yàn)時(shí)的牌子數(shù),那么這時(shí)你申請(qǐng)批量退出試用,那么這么多訂單,每退一個(gè)就會(huì)退相應(yīng)的牌子數(shù)量到賬戶(hù)當(dāng)中,這就構(gòu)成了無(wú)限制刷得問(wèn)題。
0|80x08 最小額支付
在很多白帽子測(cè)試支付的漏洞時(shí)候,修改的金額往往都是0.01等或者負(fù)數(shù),我想說(shuō)這很容易錯(cuò)失掉一些潛在的支付問(wèn)題,我就深有體會(huì),在挖掘支付漏洞的過(guò)程當(dāng)中,就遇到過(guò),直到第三次再一次檢測(cè)時(shí)才發(fā)現(xiàn),比如一些網(wǎng)站有金幣或者積分什么就相當(dāng)于支付可以用這些支付,那么在充值的時(shí)候,比如:10元對(duì)應(yīng)的積分值為100、50對(duì)應(yīng)的是5000、100對(duì)應(yīng)的是10000。
這個(gè)問(wèn)題如果你在充值時(shí)進(jìn)行修改其支付金額為負(fù)數(shù)或者0.01等是會(huì)顯示支付失敗的,但是如果你修改其金額為1.00,那么支付就會(huì)成功,也就用1元購(gòu)買(mǎi)到任意值得積分?jǐn)?shù)量了,這是為什么呢?
其實(shí)你在測(cè)試過(guò)程當(dāng)中細(xì)心點(diǎn)就可以很好發(fā)現(xiàn)的,這里最低就是1元,1元對(duì)應(yīng)100積分,而你如果修改為0.01,那么對(duì)應(yīng)的積分就是空值了,所以會(huì)顯示失敗,而當(dāng)你修改為1元,那么1元這個(gè)支付接口是存在的,其后面積分?jǐn)?shù)為其它金額的積分?jǐn)?shù),然后跳轉(zhuǎn)過(guò)去支付就會(huì)以1元購(gòu)買(mǎi)到比它多得多的積分?jǐn)?shù)量,也可以是任意積分值。
0|90x09 值為最大值支付問(wèn)題
以前也是看到過(guò)相關(guān)的例子,一些網(wǎng)站比如你購(gòu)買(mǎi)商品,這里有2個(gè)思路修改值,1是直接修改支付金額值為最大值,比如999999999,或者修改附屬值,如優(yōu)惠卷,積分等為999999999,如果這里邏輯設(shè)計(jì)有問(wèn)題,那么其支付金額會(huì)變?yōu)?。
0|100x10 越權(quán)支付
這個(gè)問(wèn)題很早之前有過(guò),現(xiàn)在可能很少存在這類(lèi)問(wèn)題,在支付當(dāng)中會(huì)出現(xiàn)當(dāng)前用戶(hù)的ID,比如:username=XXXXX,如果沒(méi)有加以驗(yàn)證,其支付也是一次性支付沒(méi)有要求輸入密碼什么的機(jī)制,那么就可以修改這個(gè)用戶(hù)ID為其它用戶(hù)ID,達(dá)到用其他用戶(hù)的賬號(hào)進(jìn)行支付你的商品。
0|110x11 無(wú)限制試用
一些網(wǎng)站的一些商品,比如云系列產(chǎn)品支持試用,試用時(shí)期一般為7天或者30天,一個(gè)賬戶(hù)只能試用一次,試用期間不能再試用,但如果這個(gè)試用接口會(huì)做好分配那么很容易導(dǎo)致問(wèn)題的發(fā)生。
這也是我遇到過(guò)的例子,比如:在支付的時(shí)候它URL后面的支付接口是3,而試用接口是4,那么此時(shí)你已經(jīng)使用過(guò)了,復(fù)制下確認(rèn)試用時(shí)的URL,修改后面的支付接口為3,那么此時(shí)就會(huì)調(diào)用購(gòu)買(mǎi)支付接口,但是由于你本身這個(gè)產(chǎn)品就是試用的,其相應(yīng)值綁定了這個(gè)試用商品,那么金額就肯定是0,那么最后點(diǎn)擊支付,你就可以看到支付成功,試用成功,又重復(fù)試用了一次,然后他們的試用時(shí)間會(huì)累加在一起,這就導(dǎo)致了可無(wú)限制購(gòu)買(mǎi)任何產(chǎn)品了。
0|120x12 修改優(yōu)惠價(jià)
比如一些商品有優(yōu)惠價(jià),優(yōu)惠多少多少,那么在支付時(shí)抓包,修改這個(gè)優(yōu)惠價(jià)就可造成支付問(wèn)題的產(chǎn)生。
支付問(wèn)題的相關(guān)分析文章:
①:http://wooyun.jozxing.cc/static/drops/papers-345.html
1|0以下是不常見(jiàn)思路
1|10x01 多線程并發(fā)問(wèn)題
可能很多白帽子知道,也有可能不知道,或者聽(tīng)說(shuō)過(guò),但是沒(méi)有實(shí)際挖掘過(guò),那么我相信,這個(gè)思路會(huì)讓你們有新的挖掘方向了。
現(xiàn)在可能還有一些大廠商存在該問(wèn)題,多線程并發(fā)問(wèn)題就是沒(méi)有實(shí)時(shí)的處理各種狀態(tài)所導(dǎo)致的問(wèn)題,之前挖掘過(guò)刷錢(qián)問(wèn)題,就是利用該思路,比如很多平臺(tái)有自家的錢(qián)包,而這個(gè)錢(qián)包是一個(gè)迷你錢(qián)包,這個(gè)錢(qián)包作用也僅是用于這當(dāng)前一個(gè)業(yè)務(wù)平臺(tái)網(wǎng)站,在提現(xiàn)時(shí),沒(méi)有任何驗(yàn)證碼或者校驗(yàn)機(jī)制,只要輸入體現(xiàn)金額就可以提現(xiàn),并且是秒到賬,如果什么負(fù)數(shù),修改金額都測(cè)試過(guò)了都不行,那么你就可以試試多線程并發(fā)問(wèn)題,提現(xiàn)時(shí)抓包,比如我現(xiàn)在錢(qián)包內(nèi)有0.1元,那么按理說(shuō)每提0.01可以體現(xiàn)10次,也就是發(fā)送10次進(jìn)程,但是利用這個(gè)問(wèn)題可以達(dá)到多發(fā)現(xiàn)幾次成功的進(jìn)程,提現(xiàn)時(shí)抓包,然后把數(shù)據(jù)包發(fā)送到BurpSuite工具的Intruder當(dāng)中,進(jìn)行批量發(fā)送18次,然后可以看到成功的提現(xiàn)到了12次。
這里我貼出相關(guān)證明圖片:
這里是從0開(kāi)始到11截止,我賬戶(hù)內(nèi)只有0.1 而這里體現(xiàn)了0.12 也就是提現(xiàn)的進(jìn)程為12次,369為提現(xiàn)成功,349為提現(xiàn)失敗的長(zhǎng)度值,從這里就可以看出這個(gè)問(wèn)題的危害了,當(dāng)然此時(shí)賬戶(hù)的金額肯定是為負(fù)的了,如果把這個(gè)提現(xiàn)金額變大,那么這多提現(xiàn)的金額可不是鬧著玩的。
當(dāng)然,多線程也可以在其它功能處進(jìn)行測(cè)試,比如我之前講到的試用商品問(wèn)題,就可以通過(guò)多線程進(jìn)行多幾次的使用,比如利用積分總換禮品,一個(gè)賬戶(hù)只能進(jìn)行總換一次,利用這個(gè)問(wèn)題,可以多幾次總換,一些轉(zhuǎn)賬功能,提現(xiàn)功能,購(gòu)買(mǎi)功能等等很多。
多線程并發(fā)的相關(guān)分析文章:http://wooyun.jozxing.cc/static/drops/papers-831.html
1|20x02 支付問(wèn)題挖掘技巧
如果你習(xí)慣用BurpSuite工具,那么在你測(cè)試抓包的時(shí)候通常請(qǐng)求包都有很多,比如有3個(gè)請(qǐng)求包,第一個(gè)請(qǐng)求包是一個(gè)干擾數(shù)據(jù)包,第二個(gè)是一個(gè)圖片加載的數(shù)據(jù)包,第三個(gè)可能才是支付相關(guān)的數(shù)據(jù)包,所以有時(shí)候要細(xì)心,不要認(rèn)為抓不到,如果你用的是其它工具,那么可以查看整個(gè)提交過(guò)程,所以很容易看到提交的各種數(shù)據(jù)包,在BurpSuite當(dāng)中你可以通過(guò)Target這模塊進(jìn)行分析,這個(gè)模塊會(huì)有你測(cè)試時(shí)相關(guān)的數(shù)據(jù)包。

可能很多白帽子知道,也有可能不知道,或者聽(tīng)說(shuō)過(guò),但是沒(méi)有實(shí)際挖掘過(guò),那么我相信,這個(gè)思路會(huì)讓你們有新的挖掘方向了。
現(xiàn)在可能還有一些大廠商存在該問(wèn)題,多線程并發(fā)問(wèn)題就是沒(méi)有實(shí)時(shí)的處理各種狀態(tài)所導(dǎo)致的問(wèn)題,之前挖掘過(guò)刷錢(qián)問(wèn)題,就是利用該思路,比如很多平臺(tái)有自家的錢(qián)包,而這個(gè)錢(qián)包是一個(gè)迷你錢(qián)包,這個(gè)錢(qián)包作用也僅是用于這當(dāng)前一個(gè)業(yè)務(wù)平臺(tái)網(wǎng)站,在提現(xiàn)時(shí),沒(méi)有任何驗(yàn)證碼或者校驗(yàn)機(jī)制,只要輸入體現(xiàn)金額就可以提現(xiàn),并且是秒到賬,如果什么負(fù)數(shù),修改金額都測(cè)試過(guò)了都不行,那么你就可以試試多線程并發(fā)問(wèn)題,提現(xiàn)時(shí)抓包,比如我現(xiàn)在錢(qián)包內(nèi)有0.1元,那么按理說(shuō)每提0.01可以體現(xiàn)10次,也就是發(fā)送10次進(jìn)程,但是利用這個(gè)問(wèn)題可以達(dá)到多發(fā)現(xiàn)幾次成功的進(jìn)程,提現(xiàn)時(shí)抓包,然后把數(shù)據(jù)包發(fā)送到BurpSuite工具的Intruder當(dāng)中,進(jìn)行批量發(fā)送18次,然后可以看到成功的提現(xiàn)到了12次。
這里我貼出相關(guān)證明圖片:
這里是從0開(kāi)始到11截止,我賬戶(hù)內(nèi)只有0.1 而這里體現(xiàn)了0.12 也就是提現(xiàn)的進(jìn)程為12次,369為提現(xiàn)成功,349為提現(xiàn)失敗的長(zhǎng)度值,從這里就可以看出這個(gè)問(wèn)題的危害了,當(dāng)然此時(shí)賬戶(hù)的金額肯定是為負(fù)的了,如果把這個(gè)提現(xiàn)金額變大,那么這多提現(xiàn)的金額可不是鬧著玩的。
當(dāng)然,多線程也可以在其它功能處進(jìn)行測(cè)試,比如我之前講到的試用商品問(wèn)題,就可以通過(guò)多線程進(jìn)行多幾次的使用,比如利用積分總換禮品,一個(gè)賬戶(hù)只能進(jìn)行總換一次,利用這個(gè)問(wèn)題,可以多幾次總換,一些轉(zhuǎn)賬功能,提現(xiàn)功能,購(gòu)買(mǎi)功能等等很多。
多線程并發(fā)的相關(guān)分析文章:http://wooyun.jozxing.cc/static/drops/papers-831.html
如果你習(xí)慣用BurpSuite工具,那么在你測(cè)試抓包的時(shí)候通常請(qǐng)求包都有很多,比如有3個(gè)請(qǐng)求包,第一個(gè)請(qǐng)求包是一個(gè)干擾數(shù)據(jù)包,第二個(gè)是一個(gè)圖片加載的數(shù)據(jù)包,第三個(gè)可能才是支付相關(guān)的數(shù)據(jù)包,所以有時(shí)候要細(xì)心,不要認(rèn)為抓不到,如果你用的是其它工具,那么可以查看整個(gè)提交過(guò)程,所以很容易看到提交的各種數(shù)據(jù)包,在BurpSuite當(dāng)中你可以通過(guò)Target這模塊進(jìn)行分析,這個(gè)模塊會(huì)有你測(cè)試時(shí)相關(guān)的數(shù)據(jù)包。