注:此篇基於DVWA的high安全等級下的brute force模式。
聲明:此篇並非原創,而是根據實際操作對部分內容解釋進行細化。
當前請求頭的user_token的值,來自上一條請求返回響應包裏已生成的user_token的值。(第一次獲取的user_token除外)
- 打開DVWA,設置安全等級爲high,進入brute force模式,設置好瀏覽器和burpsuite代理,關閉burpsuite的請求數據包截斷:
- 已知用戶名爲admin,密碼爲test。此處爲演示破解密碼過程,故作不知密碼。輸入用戶名:admin,密碼:1。點擊提交,出現如下返回頁面:
- 打開burpsuite的proxy下http history查找捕獲到的上述操作的數據包:
- 右擊請求頭文本,選擇send to intruder:
- 進入intruder下target欄目,根據被攻擊網站來設置host和port(默認已設置好了):
- 選擇positions欄目,選擇攻擊方式爲pitchfork,點擊clear&後,再依次選定password和user_token的值,點擊Add&:
- 進入payloads欄目,選擇payload set爲第1個參數(即password的值),選擇payload type爲simple list;在payload option下可以在Add後面輸入框輸入可能的密碼再點擊Add添加,也可以從Add from list裏選擇burpsuite自帶的字典。(爲了縮短破解耗費時間,這裏我選擇Add自行導入。):
- 選擇payload set爲2(即user_token的值),選擇payload type爲recursive grep:
- 進入options欄目,在request engine下設置線程爲1(此處涉及到user_token,若線程>1會報錯):
- options欄目下找到grep-extract,圖中選項打勾,點擊Add:
- 在響應包的HTML內容裏找到user_token,鼠標拖動選定user_token的值,並Ctrl+C複製其值,點擊OK:
- 進入payloads欄目,選擇payload set爲2,在payload option下找到initial payload for first request,將上步複製的user_token的值粘貼到後方輸入框內,爲首次請求賦值初始數值:
- 點擊右上角的start attack,結果如下,發現共有4種Length,length爲363的是將前面抓到的請求包重發了一遍,而user_token已然改變,故網頁重定向(狀態碼爲302);選擇下方response的render查看響應的網頁具體內容,對比之下,發現length爲4826(對應爲正確密碼test)返回網頁顯示成功登陸;length爲4869的,由於前一條user_token參數有誤返回狀態碼302,故在響應網頁底部同時提示一條CSRF token is incorrect信息;length爲4788的即爲正常輸入密碼錯誤所返回的響應頁面: