Web安全之邏輯漏洞全方位總結(jié)
1、水平越權(quán)
1.1、原理
通過更換某個(gè)ID之類的身份標(biāo)識(shí),從而使得A賬號(hào)獲取(修改,刪除等)B賬號(hào)的數(shù)據(jù);
1.2、容易出現(xiàn)的地方:
一般越權(quán)漏洞容易出現(xiàn)在權(quán)限頁(yè)面(需要登陸的頁(yè)面)增,刪,改,查的地方,當(dāng)用戶對(duì)權(quán)限頁(yè)面內(nèi)的信息進(jìn)行這些操作時(shí),后臺(tái)需要對(duì)當(dāng)前用戶的權(quán)限進(jìn)行校驗(yàn),看其是否具備操作權(quán)限,從而給出響應(yīng),而如果校驗(yàn)的規(guī)則過于簡(jiǎn)單則容易出現(xiàn)越權(quán)漏洞;
1.3、案例演示
1)我們登陸到pikachu靶場(chǎng),首先看一下提示:
2)一共兩個(gè)用戶,我們登陸到kobe用戶,來測(cè)試越權(quán)到luck用戶,我們首先登錄到kobe賬戶里面,點(diǎn)擊查看個(gè)人信息,抓到包;
3)我們將這里的kobe改為lucy,放包;
4)成功越權(quán)到lucy用戶
1.4、危害
在游戲中,假如我們是平民玩家,我們僅僅通過修改ID,就變成了其他玩家,甚至有可能變成氪金大佬;
2、垂直越權(quán)
2.1、原理
使用低權(quán)限身份的賬號(hào),發(fā)送高權(quán)限賬號(hào)才能有的請(qǐng)求,獲得其高權(quán)限的操作;
2.2、容易出現(xiàn)的地方
看看低權(quán)限用戶是否能越權(quán)使用高權(quán)限用戶的功能,比如普通用戶可以使用管理員的功能;
2.3、案例演示
1)我們首先用admin/123456,進(jìn)行登陸;
2)我們添加用戶進(jìn)行抓包,然后放在重發(fā)器;
3)我們緊接著用pikachu/000000,進(jìn)行登陸,抓包,將pikachu的cookie替換admin用戶的cookie;
4)我們發(fā)送包;
利用pikachu用戶利用admin的cookie成功創(chuàng)建了test賬戶;
2.4、危害
信息泄露,篡改用戶信息,嚴(yán)重者可修改密碼等等;
3、墨者靶場(chǎng)演示
1)打開靶場(chǎng)
2)登錄給出的test用戶
3)我們這里通過抓包進(jìn)行分析,對(duì)card_id進(jìn)行分析
4)發(fā)到測(cè)試器進(jìn)行爆破
通過前端分析,他可能是316
5)看響應(yīng)
輸入賬號(hào),對(duì)密碼進(jìn)行MD5解密
6)登錄成功
4、越權(quán)漏洞檢測(cè)-burp插件-autorize使用
Autorize是一個(gè)旨在幫助滲透測(cè)試人員檢測(cè)授權(quán)漏洞的擴(kuò)展,這是Web應(yīng)用程序滲透測(cè)試中比較耗時(shí)的任務(wù)之一;
將低權(quán)限用戶的cookie提供給擴(kuò)展程序并使用高權(quán)限用戶瀏覽網(wǎng)站就足夠了,該擴(kuò)展會(huì)自動(dòng)重復(fù)每一個(gè)請(qǐng)求與低權(quán)限用戶的會(huì)話并檢測(cè)授權(quán)漏洞;
除了授權(quán)漏洞之外,還可以在沒有任何cookie的情況下重復(fù)每一個(gè)請(qǐng)求,以檢測(cè)身份驗(yàn)證漏洞;
該插件無需任何配置即可工作,但也是高度可定制的,允許配置授權(quán)執(zhí)行條件的粒度以及插件必須測(cè)試那些請(qǐng)求,那些不需要,可以保存插件的狀態(tài)并以HTML或CSV格式導(dǎo)出授權(quán)測(cè)試報(bào)告;
報(bào)告的執(zhí)行狀態(tài)如下:
- 繞過!-紅色
- 強(qiáng)制執(zhí)行!-綠色
- 強(qiáng)制執(zhí)行???(請(qǐng)配置強(qiáng)制檢測(cè)器) -黃色
4.1、安裝
1)首先我們需要下載Jython Standalone:https://www.jython.org/download
我們需要選擇紅框里面的進(jìn)行下載:
2)配置如下:
3)我們配置好之后,接著安裝!
4.2、使用(pikachu為例)
1)獲取低權(quán)限的cookie,我們?cè)诖怪痹綑?quán)的目錄,首先獲取pikachu/000000的cookie;
2)接著我們?nèi)ピL問高權(quán)限的賬號(hào),這里需要注意,先打開插件的開關(guān),然后再去訪問高權(quán)限的賬號(hào);
3)接著就會(huì)出現(xiàn)結(jié)果;
左邊一列 紅色代表存在越權(quán)可能;
右邊一列 紅色代表存在未授權(quán)訪問可能;
接著點(diǎn)擊 三代表響應(yīng)長(zhǎng)度的數(shù)字,在右側(cè)查看具體響應(yīng);
如果是 響應(yīng)中 包含敏感數(shù)據(jù),或者一些增刪改的post請(qǐng)求,就可以報(bào)bug了;
5、支付漏洞
5.1、直接修改商品價(jià)格
在支付過程中,購(gòu)買商品一般分為三個(gè)步驟:訂購(gòu),確認(rèn)信息,付款,那么這個(gè)修改價(jià)格具體時(shí)修改那一步時(shí)的價(jià)格?在我看來你可以在這三個(gè)步驟中隨便一個(gè)步驟進(jìn)行價(jià)格的修改,進(jìn)行測(cè)試,如果前面兩步有驗(yàn)證機(jī)制,那么你可在最后一步付款進(jìn)行抓包嘗試修改金額,如果沒有在最后一步做好檢驗(yàn),那么問題就會(huì)存在,其修改的金額值,你可以嘗試小數(shù)目或者負(fù)數(shù),去測(cè)試;
參考案例:http://wooyun.2xss.cc/bug_detail.php?wybug_id=wooyun-2016-0226613
5.2、修改支付狀態(tài)
1)這個(gè)很好理解,就是假設(shè)A商品,我們進(jìn)行了購(gòu)買,用bp進(jìn)行抓包,我們看到某一個(gè)字段;
0:表示支付成功
1:表示支付失敗
假設(shè)我們暫時(shí)還未支付,bp顯示的是1,我們將1修改為0;
2)還有我們?nèi)ベ?gòu)買A商品,是10元,B商品是1000元,我們先購(gòu)買A商品,將A商品的數(shù)據(jù)包,給B商品,那么我們就能通過10元購(gòu)買10000元的商品;
我們抓取購(gòu)買包,放在重放器,這個(gè)商品為5400元;
我們將數(shù)據(jù)包放在重放器,重要的字段,我們做一下記錄;
index.php?m=Member&a=gobuy&iscart=0&id=69&name=%E5%A4%A7%E7%B1%B3CMS%E6%89%8B%E6%9C%BA%E5%BC%80%E5%8F%91%E4%B8%93%E7%89%88&qty=1&price=5400>ype=%E7%81%B0%E8%89%B2&pic=/damicms/Public/Uploads/thumb/thumb_1393206337.jpg
我們繼續(xù)在購(gòu)買6000元的手機(jī);
抓包,根據(jù)經(jīng)驗(yàn),我們將5400手機(jī)的數(shù)據(jù)包,放在6000元手機(jī)這里;
兩個(gè)數(shù)據(jù)包進(jìn)行對(duì)比:
我們將5400元手機(jī)的數(shù)據(jù)包替換掉6000元手機(jī)的數(shù)據(jù)包;
這里商品的價(jià)格就變成了5400;
5.3、修改商品的數(shù)量
支付中。假如1個(gè)饅頭10元錢,那么10個(gè)饅頭就是100元,那么-1個(gè)饅頭那?這種會(huì)不會(huì)產(chǎn)生零元購(gòu)問題那?
我們可以看到一個(gè)手機(jī)為6000元,我們進(jìn)行抓包;
這里qty這個(gè)字段非??梢?,我們將它修改為10,放包;
訂單金額變成了60000萬了,那么我們的猜想完全正確,我們將它的數(shù)量改為-1,看看什么情況;
這里的價(jià)格變成了-6000,說明漏洞確實(shí)存在;
5.4、另類支付
我們?cè)谥Ц兜臅r(shí)候,常常會(huì)給你一些優(yōu)惠卷,積分,滿減等等,而這些值同樣都是由操作的空間
1)修改優(yōu)惠卷
一般優(yōu)惠卷進(jìn)行消費(fèi)往往出現(xiàn)在第二個(gè)步驟當(dāng)中,確認(rèn)購(gòu)買信息,這個(gè)頁(yè)面當(dāng)中,你可以選擇相關(guān)的優(yōu)惠卷,我們直接修改優(yōu)惠卷的金額,等于商品的價(jià)格,或者直接將其改為負(fù)數(shù),最后進(jìn)行支付,如果說沒有對(duì)這個(gè)點(diǎn)加以驗(yàn)證,那么直接可以支付成功;
2)修改優(yōu)惠卷金額及業(yè)務(wù)邏輯問題
當(dāng)你修改其優(yōu)惠卷值為任意值或負(fù)數(shù)想要支付的時(shí)候,會(huì)顯示支付失敗,或者金額有誤等一些提示,可能這個(gè)時(shí)候,你會(huì)選擇放棄,但是當(dāng)你點(diǎn)開個(gè)人中心的時(shí)候,點(diǎn)擊訂單詳情,如果存在這個(gè)邏輯問題,那么此時(shí)在你剛剛修改優(yōu)惠卷金額后點(diǎn)擊下一步支付的時(shí)候,其實(shí)已經(jīng)產(chǎn)生了訂單,在訂單的金額內(nèi),你可以看到支付金額為0,然后點(diǎn)擊支付就可以支付成功;
這里好友一個(gè)小技巧,有可能會(huì)支付失敗,但是如果你找到的這個(gè)問題是一個(gè)業(yè)務(wù)分站點(diǎn),如果有自帶的錢包功能,那么你就可以利用這個(gè)自帶的錢包功能去支付這個(gè)訂單,而不要利用其他支付類型,就可以支付成功了;
3)修改積分金額
有些網(wǎng)站的積分,比如你消費(fèi)了多少,就可以擁有一定量的積分,這個(gè)積分可以在你付款的時(shí)候進(jìn)行折扣,如果這個(gè)積分的金額沒有做好校驗(yàn),那么你在支付當(dāng)中將積分減去的金額變成商品本身的價(jià)格,或者負(fù)數(shù),是不是就可以產(chǎn)生0原購(gòu)物了;
4)滿減修改
我們?cè)陔p十一的時(shí)候,很多會(huì)有滿300減100,這種功能,我們能不能將金額修改為滿101減100那?
參考案例:http://wooyun.2xss.cc/bug_detail.php?wybug_id=wooyun-2016-0214319
5.5、修改支付接口
一些網(wǎng)站支持多種支付的接口,微信,支付寶,還有第三方的支付工具,然后每一個(gè)接口的值不一樣,如果邏輯設(shè)計(jì)不當(dāng),那我隨便選擇一個(gè)點(diǎn)擊時(shí)進(jìn)行抓包,然后修改為一個(gè)不存在的支付接口,如果接口的相關(guān)處理沒有做到位,是不是會(huì)支付成功;
5.6、重復(fù)支付
淘寶,京東會(huì)有很多試用卡。一張卡可以試用一個(gè)商品,我們可以將這個(gè)試用的商品數(shù)據(jù)包多次重復(fù)提交,如果服務(wù)端沒有進(jìn)行嚴(yán)格的校驗(yàn)的話,就會(huì)產(chǎn)生很多這樣的訂單,這時(shí)候,我們將這個(gè)商品退掉,會(huì)怎么樣?我們會(huì)不會(huì)退回很多試用卡?
5.7、最小支付和最大支付
1)最小支付
很多測(cè)試人員在測(cè)試漏洞的時(shí)候,往往會(huì)將金額修改為0.01或者負(fù)數(shù),但這這樣會(huì)很容易錯(cuò)失掉一些潛在的漏洞,比如一些網(wǎng)站有金幣或者積分什么的支付的時(shí)候可以用這些來支付,10元等于100積分,50元相當(dāng)于500積分,這個(gè)問題如果你在充值的時(shí)候?qū)⒔痤~修改為0.01和負(fù)數(shù)會(huì)顯示支付失敗,但是如果你修改金額為1元,那么支付就會(huì)成功,也就是說1可以購(gòu)買任意積分了?
其實(shí)你在測(cè)試的時(shí)候,就會(huì)發(fā)現(xiàn),1元對(duì)應(yīng)10積分,如果你修改0.01,那么對(duì)應(yīng)的積分就是null,所以會(huì)顯示失敗,而當(dāng)你修改為1元支付接口時(shí)存在的,其后面積分?jǐn)?shù)為其他金額的積分,然后跳轉(zhuǎn)過去支付就會(huì)以1元購(gòu)買到比它多得多的積分,也可以時(shí)任意積分;
2)最大支付
一般在開發(fā)當(dāng)中,商品的金額都會(huì)用int型來定義,最大值2147483647,我們嘗試修改為2147483648,看看是否能造成整數(shù)的溢出,有可能支付狀態(tài)異常,從而導(dǎo)致支付成功;
5.8、四舍五入導(dǎo)致支付漏洞
我們以充值為例,余額值一般保存到分為止,那么如果我充值了0.001元也就是1厘,一般開發(fā)會(huì)在前端判斷我們的數(shù)字,或者將最后一位四舍五入,使用支付寶值直接報(bào)錯(cuò),因?yàn)橐话愕谌街恢С值椒郑?/p>
那我們?nèi)绻渲?.019?由于支付寶只判斷到分,所以導(dǎo)致只能支付0.01,而由于我們支付成功,前端會(huì)將9四舍五入,直接變成0.02,所以等于直接半價(jià)充值;
5.9、首單半價(jià),無線重構(gòu)
很多會(huì)員啊什么的,為了留住用戶,都會(huì)有首月半價(jià),或者免費(fèi)等等活動(dòng),我們可以抓取這個(gè)數(shù)據(jù)包,進(jìn)行多次支付,就可以一直優(yōu)惠購(gòu)買(百度云去年就有這個(gè)漏洞,可以6元一月超級(jí)會(huì)員)
5.10、越權(quán)支付
這個(gè)問題很早之前就有了,現(xiàn)在很少存在這類問題,在支付當(dāng)中會(huì)出現(xiàn)當(dāng)前用戶的ID,比如ID=1,我們將ID改為2,如果沒有加以驗(yàn)證,我們是不是用用戶2的錢支付了用戶1買商品的錢;
5.11、無線次試用
一些網(wǎng)站的一些商品,比如云系列產(chǎn)品支持試用,試用時(shí)期一般為7天或者30天,一個(gè)賬戶只能試用一次,試用期間不能試用,但如果這個(gè)試用接口沒有做好分配,那么很容易產(chǎn)生漏洞,比如支付的時(shí)候它的URL后面的支付接口為3,那么此時(shí)就會(huì)調(diào)用購(gòu)買支付接口,但是由于你本身這個(gè)產(chǎn)品就是試用的,其相應(yīng)值綁定了這個(gè)試用的產(chǎn)品,那么金額肯定是0,那么最后點(diǎn)擊支付,你就可以看到支付成功,試用成功,又重復(fù)的試用了一次,然后他們的使用時(shí)間會(huì)累加到一起,這就導(dǎo)致了可無限制購(gòu)買任何產(chǎn)品了;
5.12、多線程并發(fā)問題
多線程并發(fā)問題就是沒有實(shí)時(shí)的處理各種狀態(tài)所導(dǎo)致的問題,比如很多平臺(tái)都有自家的錢包,而這個(gè)錢包是一個(gè)迷你錢包,這個(gè)錢包作用也僅是用于當(dāng)前這個(gè)平臺(tái)網(wǎng)站,再提現(xiàn)的時(shí)候,沒有做任何的驗(yàn)證碼或者校驗(yàn)機(jī)制,只要輸入金額就可以體現(xiàn),并且是秒到賬,如果是什么負(fù)數(shù),修改金額都測(cè)試了,不行的話,那你就可以實(shí)試一試多線程并發(fā)問題,體現(xiàn)的時(shí)候進(jìn)行抓包,比如我現(xiàn)在錢包內(nèi)有0.1元,那么按照每提0,01元可以提10次的話,也就是發(fā)送10次進(jìn)程,但是利用這個(gè)問題可以達(dá)到多打幾次成功的進(jìn)程,體現(xiàn)時(shí)進(jìn)行抓包,然后把數(shù)據(jù)包發(fā)送到BurpSuite工具的Intruder當(dāng)中,進(jìn)行批量發(fā)送12次,然后可以看到成功體現(xiàn)12次,也就是0.12元,從這里就可以看出這個(gè)問題的危害了,當(dāng)然此時(shí)賬戶的金額肯定是為負(fù)的了,如果把這個(gè)提現(xiàn)金額變大,那么這多提現(xiàn)的金額可不是鬧著玩的。
當(dāng)然,多線程也可以在其它功能處進(jìn)行測(cè)試,比如我之前講到的試用商品問題,就可以通過多線程進(jìn)行多幾次的使用,比如利用積分總換禮品,一個(gè)賬戶只能進(jìn)行總換一次,利用這個(gè)問題,可以多幾次總換,一些轉(zhuǎn)賬功能,提現(xiàn)功能,購(gòu)買功能等等很多。
6、Cookie脆弱性
1)打開環(huán)境
2)代碼審計(jì),我們打開login.php;
明顯可以看出來,Cookie傳入了user,如果user為空,退出,就是登陸不成功,我們可以抓包,讓他不為空;
我們讓$user=admin,放包;
這個(gè)漏洞可以說非常雞肋,實(shí)戰(zhàn)沒有代碼,怎么知道cookie的脆弱性那?那我們就要分析,比如抓包看到了,cookie=admin,那我們可以改一改,讓cookie=test,是不是可以跳轉(zhuǎn)到test用戶了;
7、客戶端回顯
1)介紹
這種利用回顯抓取數(shù)據(jù)包,在修改驗(yàn)證,我們嘗試的時(shí)候,有的網(wǎng)站會(huì)在你填寫手機(jī)號(hào)后,點(diǎn)擊發(fā)送驗(yàn)證碼,會(huì)對(duì)你的手機(jī)號(hào)和IP進(jìn)行驗(yàn)證,看看是不是本地號(hào)碼,有的會(huì)對(duì)傳輸?shù)男畔⒂屑用埽?/p>
2)原理
在調(diào)用短信平臺(tái)發(fā)送信息時(shí),沒有判斷驗(yàn)證碼和手機(jī)號(hào)是否綁定,把驗(yàn)證碼校驗(yàn)功能直接放到客戶端進(jìn)行(也就是返回?cái)?shù)據(jù)包中),從而導(dǎo)致驗(yàn)證碼在客戶端回顯;
3)危害
這個(gè)危害有一點(diǎn)明顯,登陸,注冊(cè),綁定,重置任意用戶的密碼;
4)利用
客戶端回顯,就是當(dāng)注冊(cè)或者綁定的時(shí)候,用戶向網(wǎng)站系統(tǒng)發(fā)送一條短信驗(yàn)證碼的請(qǐng)求,cookie中會(huì)包含短信驗(yàn)證碼并且回顯在數(shù)據(jù)包中,如cookie=xxxxxx es_id=534324,我們這時(shí)候通過抓包工具可截取真實(shí)的驗(yàn)證碼,如cookie=xxxxxx es_id=567475,通過分析,真實(shí)得驗(yàn)證碼為567475,我們這時(shí)候,將驗(yàn)證碼修改為正確的驗(yàn)證碼,提交上去,就會(huì)成功注冊(cè)或者綁定;
8、Response狀態(tài)值
1)原理
Response狀態(tài)值,就是在服務(wù)器發(fā)送某個(gè)密碼重置的憑據(jù)之后,出現(xiàn)特定的響應(yīng)值(ture,1,ok,success等等,例如響應(yīng)頭中的HTTP/1.1 200 ok)
2)利用過程
對(duì)Response狀態(tài)值修改后,如果存在校驗(yàn)不嚴(yán)(存在邏輯漏洞),并且回顯值得校驗(yàn)是在客戶端進(jìn)行,就能使相關(guān)操作成功被執(zhí)行;
就像密碼重置中的驗(yàn)證碼問題,如果回顯值得校驗(yàn)是發(fā)送到客戶端進(jìn)行,通過對(duì)校驗(yàn)值得使用規(guī)則進(jìn)行分析后,抓包將Response狀態(tài)值改為正確得,然后放包,從而達(dá)到重置密碼得效果;
3)案例演示
演示地址:[http://xxx.com/Admin/Login.aspx]
我們賬號(hào)密碼輸入admin/admin,進(jìn)行抓包,我們將包首先放到Repeater中看看結(jié)構(gòu);
我們能不能猜測(cè)"d":"0,賬號(hào)密碼錯(cuò)誤!",我們將0改為1,直接登陸那?
我們攔截響應(yīng)包,將0改為1;
成功進(jìn)來了;
9、驗(yàn)證碼
9.1、無效驗(yàn)證
在驗(yàn)證碼模塊,但驗(yàn)證模塊與業(yè)務(wù)功能沒有關(guān)聯(lián)性,此為無效驗(yàn)證,一般在新上線得系統(tǒng)中比較常見;
我們?cè)讷@取短信驗(yàn)證碼后,隨意輸入驗(yàn)證碼,直接輸入兩次密碼,可成功更改用戶得密碼,沒有對(duì)驗(yàn)證碼進(jìn)行驗(yàn)證;
9.2、任意用戶注冊(cè)
我們首先利用自己得手機(jī)號(hào)接收驗(yàn)證碼進(jìn)行驗(yàn)證,下一步跳轉(zhuǎn)一個(gè)設(shè)定密碼得頁(yè)面,接下來抓包,篡改手機(jī)號(hào)碼,使用任意手機(jī)號(hào)進(jìn)行注冊(cè),問題解讀:這里業(yè)務(wù)一致性存在安全隱患,身份驗(yàn)證與密碼修改得過程是分開的,驗(yàn)證無效;
9.3、客戶端驗(yàn)證繞過
客戶端驗(yàn)證是不安全的,和我上面的邏輯漏洞一樣,可能會(huì)導(dǎo)致任意賬號(hào)的注冊(cè),登陸以及重置任意用戶等一系列的問題,有的時(shí)候會(huì)直接在前端顯示驗(yàn)證碼的明文信息;
我們拿到前端的驗(yàn)證碼,即可成功重置密碼;
9.4、返回密文驗(yàn)證碼
我們用抓包工具,抓取到包之后,會(huì)返回一大串密文,這個(gè)時(shí)候,我們把密文拿去解密,即可獲得驗(yàn)證碼;
9.5、攔截替換返回包
我們第一步使用正常的賬號(hào)修改密碼,獲取驗(yàn)證碼通過時(shí)服務(wù)器的返回包,保存該信息,我們第二次,用另一個(gè)賬號(hào)進(jìn)行登陸,這時(shí)候,我們不知道驗(yàn)證碼,我們隨便輸入驗(yàn)證碼,在抓到驗(yàn)證碼錯(cuò)誤的返回包,我們將剛才正常的返回包替換掉錯(cuò)誤的返回包,這時(shí)候會(huì)提示密碼修改成功;
9.6、驗(yàn)證碼爆破
短信驗(yàn)證碼一般由4位后者6位數(shù)字組成(還有特殊情況,字母數(shù)字組合等等),若服務(wù)器未對(duì)驗(yàn)證時(shí)間,次數(shù)進(jìn)行限制,則存在爆破的可能;
輸入手機(jī)號(hào)獲取驗(yàn)證碼,輸入任意驗(yàn)證碼,抓包放到Intruder模塊,將短信驗(yàn)證碼字段設(shè)置偽payload,然后取值范圍設(shè)定好,進(jìn)行暴力破解,根據(jù)返回響應(yīng)包的長(zhǎng)度判斷是否爆破成功;
9.7、驗(yàn)證碼與手機(jī)未綁定
一般來說短信驗(yàn)證碼僅能使用一次,驗(yàn)證碼和手機(jī)號(hào)未綁定,驗(yàn)證碼一段時(shí)間內(nèi)有效,那么就可能出現(xiàn)如下情況:
- A手機(jī)驗(yàn)證碼,B可能拿來用
- A手機(jī)在一定時(shí)間間隔內(nèi)接收到兩個(gè)驗(yàn)證碼,都可以用;
- 檢測(cè)接收驗(yàn)證碼的手機(jī)號(hào)和綁定的手機(jī)號(hào)是否一致
案例:任意用戶密碼重置
- 使用自己的手機(jī)號(hào)收到驗(yàn)證碼
- 自己的驗(yàn)證碼和對(duì)方手機(jī)號(hào)填上,下一步就是設(shè)置新的密碼
9.8、代碼層邏輯缺陷
如果代碼層的邏輯是這個(gè)樣子:
- 驗(yàn)證手機(jī)號(hào)是否已發(fā)送驗(yàn)證碼
- 去除用戶輸入的空格和其他特殊字符
- 重新發(fā)送驗(yàn)證碼
那么,可利用"\n"和空格進(jìn)行繞過,持續(xù)遞增空格就可造成無線短信轟炸,我們?cè)谑謾C(jī)號(hào)后面加一位進(jìn)行fuzz,可能會(huì)有不一樣的結(jié)果;
10、短信轟炸
1)短信轟炸時(shí)手機(jī)驗(yàn)證碼中最常見的一種漏洞類型,在測(cè)試過程中,對(duì)短信驗(yàn)證碼接口進(jìn)行重發(fā)數(shù)據(jù)包,導(dǎo)致大量發(fā)送惡意短信;
2)大多數(shù)情況下,短信驗(yàn)證碼都是間隔60秒,這種情況,我們就每隔60秒發(fā)一條短信,無線下發(fā),短信轟炸,在測(cè)試過程中,可通過編寫Python腳本來實(shí)現(xiàn)短信轟炸;
11、繞過token
11.1、前端回顯
我們啟動(dòng)pikachu靶場(chǎng);
抓包放在重發(fā)器,可以看到token直接回顯在響應(yīng)里面;
這里就非常不安全,我們可以借助回顯,對(duì)token進(jìn)行爆破;
11.2、token爆破
我們將抓包的內(nèi)容發(fā)送到Intruder模塊;
在Options中找到Request Engine模塊,把線程設(shè)置為1,這里如果說線程設(shè)置過高,是沒有效果的;
在Options在grep位置添加找到token并添加token;
payload1的位置隨便輸入
payload2的位置訓(xùn)責(zé)遞歸搜索;
可以看到,每次請(qǐng)求的token值都不一樣;
12、Callback自定義返回調(diào)用
12.1、什么是Callback
一般來說,函數(shù)的形參是指由外往內(nèi)函數(shù)體傳遞變量的入口,但此處加了callback后則完全相反,它是指函數(shù)體在完成某種使命后調(diào)用外部函數(shù)的出口,也就是回頭調(diào)用外部函數(shù)的意思;
鏈接如下:https://xxx/login?callback=https%3A%2F%2F2haohr.com%2Fpersonnel
這里的callback后的數(shù)據(jù)代表微信登陸,然后將微信登陸的數(shù)據(jù)返回給callback,callback參數(shù)可以更改,可以和跨站漏洞結(jié)合,在網(wǎng)頁(yè)中源碼中搜索傳遞的參數(shù),如果存在,意味著URL傳遞的參數(shù)會(huì)在網(wǎng)頁(yè)的前端顯示,是不是意味著我們可能可以構(gòu)造XSS漏洞;
我們?cè)谕诼┒吹臅r(shí)候,著重關(guān)注關(guān)鍵的參數(shù):id,callback,filename,uid等等
我們可以在這個(gè)頁(yè)面搜索關(guān)鍵字來進(jìn)行過濾;選出敏感的信息;