滲透測試之邏輯漏洞挖掘(個人經驗總結)
因為最近接觸的邏輯漏洞挺多的,所以想把自己的個人在實戰中的經驗總結一下,可能總結的不全,但是都是我自己實戰中遇到的。因為邏輯漏洞是那些掃描器掃不出來的,所以挖起來會比較輕松,像那些注入基本都被挖空了。
一丶漏洞介紹
業務邏輯漏洞是指由于程序邏輯不嚴謹或邏輯太復雜,導致一些邏輯分支不能正常處理或處理錯誤。
二丶常見場景

三丶漏洞情景
1)登錄驗證碼爆破
有些系統,手機獲取驗證碼的時候,沒有對驗證碼的驗證次數進行限制,或者是沒有對驗證碼的有限時間進行限制,就會造成驗證碼爆破,但是實戰中4位的數字驗證碼還是很容易爆破的,有些6 7 位的就不是很好爆破了,一般src也不會收這些。
2)憑證返回
這個就很有意思,在一次某人才網漏洞挖掘的時候,發現在獲取驗證碼的地方,抓包,返回的響應包set-Cookie里面直接返回了驗證碼,直接就可以輸入驗證碼,可以完成任意用戶登錄,注冊,密碼找回。有一些還有在登陸或者密碼找回的時候會返回密碼。

3)驗證碼繞過
其實這里不只是驗證碼,在某些密碼找回,或者驗證用戶憑證的時候,會根據返回的狀態碼進行校驗,假設驗證碼是正確的,返回的狀態碼位1,錯為2,這里我們就可以通過抓取響應包,修改狀態碼為1,即可達到驗證繞過。最開始的時候我不會抓響應包后來才知道怎么抓,很簡單,就是在Burp里面的Do intercept -> Response to this request。

4)短信轟炸
造成短信轟炸的原因主要是沒有對單個用戶獲取驗證碼的次數進行限制,通過Burp抓包,數據包重放就可以造成短信轟炸。
5)session覆蓋
同一瀏覽器,首先輸入自己的賬戶進行郵箱密碼找回,進入郵箱查看鏈接,接著輸入他人賬戶,進行密碼找回,返回剛剛自己的郵箱點擊鏈接,由于 session 覆蓋導致了,這個鏈接成為了修改他人密碼的鏈接,成功修改他人密碼
6)邏輯越權
相同級別(權限)的用戶或者同一角色不同的用戶之間,可以越權訪問、修改或者刪除的非法操作,如果出現此漏洞,可能會造成大批量的數據泄漏,嚴重的甚至會造成用戶信息被惡意篡改
1.訂單越權:通過修改URL的訂單id值越權查看訂單(有些是在POST包中修改)
2.收獲地址越權:收貨地址這里碰到的還是蠻多的,在收貨地址的地方,查看收貨地址,有些通過修改address的id值即可查看別人的收貨地址,還有越權修改別人的收貨地址,這里有一個小套路,假設此站點的收貨地址存在xss漏洞,就可以通過修改別人的收貨地址打到cookie,這里也算是個組合拳吧。還有就是思路需要靈活,有些開發對會員中心的收貨地址進行限制了,但是在提交訂單的地方,也是可以越權查看他人的收貨地址的。
3.資料修改:這里跟收貨地址其實沒什么區別,也可以通過xss進行組合拳。
4.其實還有很多越權的方式,但是我碰到的不是很多,這些是我碰到最多的情況。
7)換綁手機,密碼重置
這里的思路其實就是后臺沒有對賬號和綁定手機進行校驗,我們可以通過抓包修改綁定的手機號碼為我們的手機號,即可造成密碼重置,或者一些別的操作
8)支付類邏輯
1.商品價格修改:在購買商品的時候,通過抓包通過修改商品的價格,即可造成0.01元購買商品。這里修改商品價格的地方很多,加入購物車的時候可以修改,提交訂單的時候也可以修改,這個看情況進行修改。
2.商品數量修改:有些開發會對商品的價格進行封裝,我們通過修改數據包沒法進行修改,但是這里的商品數量可以改為-1,然后我們再選擇別的商品,即可造成價格抵扣。這里修改的地方也是加入購物車的時候可以修改,提交訂單的時候也可以修改。
3.運費修改:這個跟以上同理,但是有些開發只對商品做了限制,忽略了運費這一點,通過修改運費為負數,即可抵扣商品。
4.支付金額修改:這個就是最后一步支付的時候,可以修改訂單的價格,造成低價購買。
四丶總結
邏輯漏洞的挖掘其實也是思路拓展的過程
1.測試業務的時候,先了解清楚業務整體流程,可以利用思維導圖快速理清各個業務之間的關系也可以通過查看 JS 了解(JS 中可能會存在信息泄漏)
2.重點關注的業務:個人(他人)信息、密碼修改(找回)、支付流程、注冊流程、需要手機(郵箱)驗證的業務
3. 對每個業務模塊進行抓包,分析其中各種請求,注意 特殊參數,很有可能就是這些 特殊參數 決定了業務步驟
4. 抓包重放的過程,需要多次實驗,判斷是否可以跳過(繞過),如何跳過(繞過),純數字可以用 數字 + 字母 嘗試繞過
5. 返回包中數據的分析,關注特殊字符串和特殊參數
6.綜上所述,業務流程需同時結合 HTTP/HTTPS 請求分析,關注重點在各種可以用于區別的參數,繞過必要驗證,跳過業務步驟。