邏輯漏洞
在我理解中,邏輯漏洞是指由於程序邏輯輸入管控不嚴,導致程序不能夠正常處理或處理錯誤,一般出現在登錄注冊、密碼找回、信息查看、交易支付金額等。
我將所有邏輯漏洞的問題分為前端和后端兩個部分,總體思路都是先測試前端再測試后端。在我理解中其實就是能突破規則限制的就是漏洞【像不可修改的通過抓包可以修改了】。
一、注冊處
注冊功能可能出現任意用戶注冊、短信轟炸等問題。
配合思維導圖(此處以常見的手機注冊舉例,同理其他注冊也可以套用該模型)。
框里面是對每一個步驟的解釋,框右邊是總結的流程。(先不管圖片驗證碼的原因是因為就算圖片驗證碼可繞過,廠商也會因為該漏洞危害小而忽略)
1、前端
首先是前端,打開burpsuite,將整個注冊流程走一遍,將每個步驟的包都右鍵標上不同顏色。
就像這樣:
查看每個返回包有沒有返回手機驗證碼或者存在true、false之類的判斷語句,嘗試將false修改為true,成功注冊的話就繞過了前端驗證。
這樣可以攔截該請求返回包:
2、短信轟炸
嘗試重放發送驗證碼的包,查看手機是否在短時間內收到了多條短信,是的話則存在短信轟炸漏洞,這是因為后端沒有對發送手機短信做時間限制。
3、修改發送包手機號
最后是修改發送包的手機號,首先用自己的手機收到正確驗證碼,在點擊注冊時攔截包將手機號改為其他手機號,如果成功的話就注冊了別人的手機號,這是因為后端僅驗證了驗證碼是否是正確的而沒有驗證驗證碼是否與手機匹配。
流程小結
1、前端判斷【回顯及判斷】
2、短信轟炸
3、修改發送包手機號
【郵箱注冊】4、修改發送包郵箱嘗試覆蓋注冊
以上是手機注冊的大概框架流程,同理其他注冊類型也可以對比測試。
二、登錄處
登錄處可能出現任意用戶登錄、驗證碼可繞過、用戶賬號可撞庫等問題。
配合思維導圖,此處思維導圖上說的密碼也是手機驗證碼,因為是以手機驗證碼登錄舉例(此處以常見的手機驗證碼登錄舉例,同樣賬號密碼登錄也可以套用該模型,手機驗證碼登錄的特殊處已用框標記)
同樣的,也是先測試前端再測試后端。
1、前端
首先對比正確登錄和錯誤登錄的包,對比返回包看是否有判斷,嘗試修改參數繞過前端驗證。(這里也是打開burpsuite整個流程走一遍,和上面的注冊處測試差不多)
2、短信轟炸
測試短信轟炸與注冊處測試步驟一樣(一般來說注冊處有短信轟炸的話這里也會有)。
3、驗證碼爆破
再然后就是驗證碼爆破(或繞過),此處驗證碼包括圖片驗證碼和手機驗證碼,先測試圖片驗證碼,將使用正確密碼登錄的包再重放一次,如果回顯還是正確登錄的話說明並沒有對圖片驗證碼進行限制,可以嘗試撞庫。
至於手機驗證碼,通常是嘗試爆破,如果網站發到手機上的短信沒有寫什么在xx時間內有效之類的則有可能沒有時間限制,將登錄包右鍵發送至Intruder(即測試器模塊)設置好爆破位置后在載荷里選擇數值后這樣填寫。
通常范圍是填寫正確驗證碼所在的范圍,爆破出來可以登錄用戶,漏洞標題也就可以寫任意用戶登錄漏洞。
4、修改發送包手機號
修改發送包手機號則和上面注冊處修改發送包手機號步驟一樣,不同的是上面注冊處是為了測試任意用戶注冊,而這里登錄處是為了測試任意用戶登錄,原理一樣目的不同。
5、修改用戶參數
查看正確登錄包的返回包是否有用戶id之類的參數,嘗試修改該參數。(不嫌麻煩的話可以用兩個正確登錄的返回包對比)
攔截該請求的返回包修改返回包中的用戶參數。
流程小結
1、前端判斷【回顯及判斷】
2、短信轟炸
3、驗證碼爆破
4、修改發送包手機號
5、嘗試修改用戶參數【注意token等參數】
三、密碼找回處
密碼找回處可能出現任意用戶密碼找回、驗證碼可繞過等問題。
密碼找回處的思維導圖,此處以手機驗證碼找回為例。
這里也是先前端再后端。
1、前端
前端測試與前面一致,無非就是修改返回包看是否能跳過驗證步驟,此處也就略過。
2、驗證碼爆破
第2步之所以沒有寫短信轟炸是因為前面注冊和登錄已經測試過了。
驗證碼爆破與上面登錄處的驗證碼爆破操作一致。
3、修改發送包手機號
這里與上面注冊處的修改發送包手機號操作一致,也就不多說了。
流程小結(其實精華都在思維導圖上,其他的都是做解釋,在最后我會把思維導圖整體放上來)
1、前端判斷【回顯及判斷】
2、驗證碼爆破
3、修改發送包手機號或郵箱【提交時修改手機號或者修改驗證碼發送包的手機號】
4、【郵箱找回】鏈接嘗試修改用戶參數【注意token等參數】
四、支付與越權
這里放上思維導圖。
這里之所以沒有按先前端再后端的順序來寫,是因為幾乎每個網站的支付和越權邏輯都不太一樣,使用先前端再后端這樣的框架的話就限制了思路。
在支付和越權這里我認為,只要有參數,都可以修改,都有可能出現問題。
通常我會使用兩個賬號來對比測試,這樣可以更快發現可疑參數。
解釋(有任何問題都可以留言,我會盡量解答,問題很多的話我會在過段時間的進階篇里統一歸納整理):
支付接口指的是網站支付一般會有像微信支付、支付寶支付這種,一般網站會在支付的發送包里用某個參數標識。
登錄時查看並測試用戶信息返回接口指的是,在登錄的時候,有的網站有個返回包是一個json數據包,該包內包含了用戶敏感信息,此時就可以嘗試修改發送包的用戶參數,說不定就能獲取其他用戶的敏感信息。
思維導圖總覽
轉載於https://www.freebuf.com/articles/web/195837.html