不知道我有沒有提過,我是機械系出身的,
先前的工作是個熱流研究員,
比較熟悉的領域是CFD(計算流體力學),
也就是跑熱流模擬分析的。
就像CFD中常聽到的一句話,
「Garbage in, garbage out.」,
只是動手操作軟體工具,要跑出一個結果其實很容易,
作為一個合格的研究員,應該是要能夠清楚了解自己的輸入參數,
背後的演算法跟紊流模型、初始與邊界條件的合理與正確性。
不過懂得正確跑模擬與設定適當的參數,
也只是一個普通合格的熱流研究員。
懂得看結果,分析結果的端倪,
做出分析判斷與下一步方向的才是個專業的研究員。
所以回到正題XD
我們知道了如何操作Intruder,
也知道的攻擊模式與Payload的類型,
可以進行攻擊進行暴力破解之後呢?
要從滿滿的結果當中,
找出哪個才是我們想要的結果,
或是可以從眾多回應當中分析出可能的漏洞點,
這個也是一件相當重要的事情。
其實前面有提到過,
可以利用length跟status code去做判斷,
這其實也是實務上最常用好用的判斷方式。
但實際上也常常會遇到利用這兩項還是找不出我們想要的結過,
如果你只知道用這個兩個東西去分析,
那這兩個東西如果看不出差異,你就摸摸鼻頭打算放棄,
那就太可惜了,可能就錯過了一個千載難逢的漏洞阿。
所以今天來談談稍微多一些些分析Intruder結果的方法。
首先從登入畫面就開始進行暴力破解,
這邊我原始的帳號密碼使用admin:password,
使用cluster bomb的攻擊模式,
帳號密碼都使用Simple的Payload,
隨便輸入幾個,有確定有一組是正確的帳密組合就好。
還有要記得開起always去處理redirection,
接著開始攻擊,攻擊之後的結果如下,
如果一直所說的,一般最常是利用回應的長度,
還有回應的HTTP Status Code去做差異性的判斷,
不過這邊Status Code都一樣,可是我們能夠藉由長度判斷有一個不一樣。
我們可以看到帳密登入成功的回應中會有,
「Welcome to Damn Vulnerable Web App」這一段內容,
所以我們可以利用Options的設定來新增一個flag欄位,
協助我們去判斷哪些的回應內容當中有出現某些特定字元。
我們關閉這個攻擊完的結果視窗,
到 Intruder -> Options -> Grep-Match,
先按Clear把原本的清除掉,
接著把我們剛剛確認登入成功後會出現的內容新增上去。
再按下攻擊,可以發現有多了一個欄位,
而這個欄位就是我們剛剛在Grep-Match的設定,
如果回應的內容當中有出現我們設定的字元,
這個欄位下的框框就會被打勾勾。
我們也可以點擊上方的Columns,看到有更多的欄位,
依據不同的場景與情況會使用上不同的欄位,
像是如果是使用Time-based的SQL Injection攻擊,
就會需要開啟Response received來幫助我們判斷是否成功。
我們也可以利用filter去篩選match字元,
點擊Filter,假設我們知道登入成功後的回應內容中會有welcome,
我們也可以輸入welcome幫助我們過濾出想要的內容。
接著第二個demo,我們來稍微試一下SQL Injection的,
先在DVWA把難度調到最低,選擇SQL Injection的測試項目,
隨便輸入一些內容,Burp攔截到之後送到Intruder。
接著Payload的地方,先推薦大家下面一個github,
雖然我其實很不建議新手使用這種Intruder用字典的方式來測試SQLi漏洞,
但今天目的只是想demo一下分析結果的方式,所以沒甚麼差。
這邊我Load的是SQL Injection中的Intruder->Auth_Bypass.txt
https://github.com/swisskyrepo/PayloadsAllTheThings
接著我們做個假設,假設SQLi語法有成功造成某些影響,
回應裡面可能會產生mysql或是syntax的字元,
所以依照剛剛的方法,我們在Grep-Match當中加入這兩個單字。
開始攻擊之後,有發現有出現這兩個回應的,
點選欄位的名稱可以排序,發現只有少少的兩個。
眉頭一皺,發現案情不單純,關閉再來一次,
這次我們來對我們的Payload進行一些變化,
到Payload Processing這邊,我們把空格去更換成+,
記得Match的欄位要輸入一個空格。
再跑一次攻擊,可以發現這次多了不少,
並且除了有mysql與syntax這兩個flag的以外,
當我們利用Length排序,也有意外的發現,
可以發現有個長度不太一樣,
點進去看其實可以發現是SQLi成功取得了數據內容。
第三個demo我們來收集一下cookie,
我們先隨便對DVWA的首頁丟出一個請求,
將這個請求送到Intruder。
接著來做一個很特別的操作,
我們把cookie的這一段內容移除掉,
並且全部的內容都不需要加上Position。
Payload Sets的地方我們選擇Null payloads,
可以不用產生太多,我們產生20個就好。
接著到Intruder -> Options -> Grep-Extract,
這邊要設定的其實就是我們要擷取回應中哪個「位置」的內容。
假設我們要收集或是我們想要知道的是回傳的cookie內容,
我們點選Edit進去,先按Fetch response,
接著利用滑鼠來去圈選出我們想要解析的內容的位置。
好了之後也可以看看上方確認,沒問題之後就按OK。
然後開始攻擊,可以看到攻擊之後的結果,
這邊重複了20個一樣的請求,
並且把每個回應中特定的位置的內容給顯示出來。
今天的內容就到這裡囉,
大家中秋節快樂啦!開開心心放假吧~