Intruder 可以算是Brup當中最強大與好用的工具之一。
其中的原理其實相當簡單好理解,
就是在原始的請求中,通過設定一些位置的參數值為變數,
再給予這個變數一堆payload(字典檔)進行替換持續送出不同的請求,
最後透過每個不同請求所得到的回應內容來進行分析比對。
下面是一張簡單的示意圖。

假設今天有一個登入頁面的請求使用POST傳輸,
(姑且先不管正確格式該有換行與可能需要Header)
傳輸的內容中,有兩個參數,
分別是user與pwd這兩個參數,
假設我第一次的請求中,
我在這兩個參數中分別輸入的Peter與123兩個參數值。
然後登入失敗了,
但是我認為我的密碼123是正確的,
可是帳號是不是正確的我不確定,
所以我準備了一堆「我覺得可能是帳號的內容」,
也就是我們所謂的Payloads或是字典檔,
而我想要將這些Payloads一筆一筆的輸入然後送出,
來確認哪一個才能成功,哪一個才是真正的帳號。
不過這個過程如果手動來做,
如果Payloads內容很多,則會相當耗費並且浪費時間,
所以我就可以利用Intruder來協助我,
Intruder可以自動的將payloads的內容一筆一筆替換掉帳號的內容,
然後就送出一個新的請求,持續地重複這樣的動作。
Intruder通常會被用在以下場景:
- 列舉使用者的帳號、密碼、表單內容等等
- FUZZING測試
- 進行注入型的漏洞
- URL路徑或參數的列舉
- 數據蒐集
使用的方式是可以將攔截的請求、
SiteMap中的請求、Repeater的請求,
其實不管是在哪裡,在Burp當中都可以對請求(Request)點選右鍵,
將這個Request Send to Intruder。
Intruder下方有四個選項:
分別為Target、Positions、Payloads、Options。

接下來我們直接針對我們的靶機來進行實作,
以實作的方式做過一遍應該更容易了解Intruder。



首先當然是開啟靶機,我們點進DVWA,
在帳號密碼欄位輸入帳號admin,
密碼欄位故意輸入一個錯誤的,譬如說notmypwd。
送出之後,Burp攔截到了這個請求,
我們可以直接在攔截的地方點選右鍵send Intruder。

接下來我們把畫面切到Intruder功能。
我們可以在Target中看到關於目標的Host與Port資訊,
這邊其實沒甚麼好說的,就還是要注意一下自己有沒有打錯人就好。

接著我們重點關注到Positions,
Position的用途是定義你要替換的內容位置。



在position的地方可以看到有些字串被給highlight起來,
這代表是要進行嘗試替換破解的字串,
這邊必須要確保設定的參數正確,才不會導致我們浪費時間送出請求。
下圖中可以看到被圈起來的參數有相當的多,
這個是Burp預設認定為變數的地方,會先幫我們圈選起來,
但實際上我們只要改變password的值而已。
所以我們按一下右邊的clear,將我們要改的變數圈選起來按add。
(假設我們已經知道帳號是admin, 所以只將密碼給add)


Attack type先選擇Sniper即可,
關於Attack type詳細會於明天介紹,
今天先讓我們完成一個流程讓大家稍微清楚Intruder流程與效果。
設定好了Positions之後點選到Payload的選項
payload通常都是一個list, 就是你要發送給server的資料
這邊Payload set選1(當然我相信你也只有1可以選),
payload type先選擇simple list,
關於Payloads也一樣,詳細會於明天介紹。


Playload Option的部分,
這邊其實就是要設定我們要使用的Payload(字典檔)了。
可以在Add的欄位逐項的輸入我們要填入的payload,
也可以利用Load…載入我們的payload,
如果是專業版的,下方會提供一些預設字典檔可以直接載入。
這邊我們就手動輸入一些單字,按Add新增就可以了,
隨便新增個幾個就可以了,不過要記得其中要有password才行。
這邊設定好之後下面其他設定先不理會,
直接大膽地按下又上方的Start attack,
會彈出一個進行攻擊的畫面。

我們可以從這邊看出目前的暴力破解進度
也可以直接觀察回應的結果。



隨便點一個進去看看,可以看到Request跟Response的內容,
也可以看到Request當中的內容的確有被替換掉。

不過很尷尬的是,我也是進行暴力破解之後,
才注意到原來DVWA不管是密碼正確還是錯誤,都會進行轉址。
可以從圖看得出來,不管密碼是正確還是錯誤,
我們都會得到一樣的Status code與回應內容長度。
這樣我們沒辦法分辨哪一組密碼才是對的阿,
所以先關閉這個視窗,讓我們回頭稍微更改一個設定再暴力破解一次。



除了剛剛的設定以外呢,我們需要到Options的功能,
往下滑到最下面,把Redirections的選項改成勾選Always,
這樣待會我們再進行暴力破解的時候,
如果我們送出的請求得到轉址的回應,Burp就會自動去follow這個轉址。

勾選完畢之後,就毫無懸念的再按下Start attack,
因為數量很少,很快就會跑完了。



這時候雖然回應的Status Code仍然還是一樣的,
但是回應的內容長度 Length,卻是可以看得出差異的,
可以透過直接觀察或是排序來看,
總之我們會發現有個回應的內容長度比較不一樣,
在帳密猜測暴力破解的時候,這通常就表示著你猜對了~
我們也可以點進去看看Response的內容來確認看看。
藉由Status Code與Length這兩個欄位,
來觀察暴力破解或是FUZZING、列舉的結果,
算是最基本的功力與觀念,稍微更進階的操作,
會於接下來幾天介紹的~
今天就先這樣啦,
裊裊秋風動,淒淒煙雨繁。
本系列的文章為作者參與第 12 屆 iT 邦幫忙鐵人賽的文章修改
原文連結 https://ithelp.ithome.com.tw/users/20114110/ironman/3806
i like this just right post