戰(zhàn):四種攻擊模式詳解與靶場(chǎng)演練)
1. 項(xiàng)目概述為什么Bruteforce_Test是Burpsuite入門的絕佳靶場(chǎng)如果你剛開始接觸Web安全測(cè)試或者想系統(tǒng)性地掌握Burpsuite這個(gè)“瑞士軍刀”的核心攻擊模塊那么Bruteforce_Test這個(gè)靶場(chǎng)絕對(duì)是你繞不開的經(jīng)典練手項(xiàng)目。它不像那些復(fù)雜的綜合靶場(chǎng)一上來就給你幾十個(gè)漏洞點(diǎn)讓人無從下手。Bruteforce_Test顧名思義就是專門為“暴力破解”攻擊設(shè)計(jì)的目標(biāo)極其純粹一個(gè)登錄框。這恰恰是學(xué)習(xí)攻擊工具最理想的狀態(tài)——?jiǎng)冸x復(fù)雜的業(yè)務(wù)邏輯和干擾項(xiàng)讓你能聚焦于工具本身的使用邏輯、參數(shù)配置和攻擊模式的選擇。我見過很多新手一拿到Burpsuite就直奔Intruder模塊看著四個(gè)攻擊模式Sniper, Battering ram, Pitchfork, Cluster bomb發(fā)懵隨便選一個(gè)就開始跑結(jié)果要么是請(qǐng)求亂發(fā)一通毫無效果要么就是字典配置不對(duì)跑出來的結(jié)果根本沒法看。這不僅打擊信心更糟糕的是形成了錯(cuò)誤的使用習(xí)慣。Bruteforce_Test這個(gè)靶場(chǎng)就像駕校里的“倒車入庫”項(xiàng)目它把“暴力破解登錄”這個(gè)最常見的攻擊場(chǎng)景拆解成了最基礎(chǔ)的幾個(gè)考核點(diǎn)你能否正確抓包、能否精準(zhǔn)定位攻擊參數(shù)、能否根據(jù)場(chǎng)景選擇合適的攻擊模式、以及能否配置高效可用的字典。這次我就以這個(gè)靶場(chǎng)為例帶你完整走一遍流程。我們不只講“怎么點(diǎn)”更要講清楚“為什么這么點(diǎn)”。我會(huì)詳細(xì)拆解四種攻擊模式各自的適用場(chǎng)景和底層邏輯并分享我多年來積累的、針對(duì)登錄爆破場(chǎng)景的字典配置心得包括如何避免觸發(fā)賬戶鎖定策略、如何提升爆破效率等實(shí)戰(zhàn)技巧。無論你是剛安裝好Burpsuite的新手還是想鞏固基礎(chǔ)的老手這篇手把手的指南都能讓你對(duì)Intruder模塊有一個(gè)透徹的理解。2. 環(huán)境準(zhǔn)備與靶場(chǎng)搭建2.1 Burpsuite社區(qū)版與專業(yè)版的抉擇工欲善其事必先利其器。首先你得有個(gè)Burpsuite。很多教程一上來就讓你找破解版我強(qiáng)烈不建議這么做。一來有安全風(fēng)險(xiǎn)二來不穩(wěn)定最重要的是PortSwigger官方提供的社區(qū)版Community Edition對(duì)于學(xué)習(xí)核心功能來說已經(jīng)完全夠用。Intruder模塊在社區(qū)版中功能完整只是速度上有限制每秒請(qǐng)求數(shù)受限但這對(duì)于學(xué)習(xí)Bruteforce_Test靶場(chǎng)恰恰是好事——它能讓你更清晰地觀察每個(gè)請(qǐng)求和響應(yīng)而不是“唰”一下全跑完了你還不知道發(fā)生了什么。去PortSwigger官網(wǎng)下載安裝包過程很簡(jiǎn)單。安裝后首次運(yùn)行它會(huì)讓你選擇臨時(shí)項(xiàng)目還是磁盤項(xiàng)目。對(duì)于練習(xí)選“Temporary project”就行。關(guān)鍵是配置瀏覽器代理。我習(xí)慣用Chrome安裝SwitchyOmega插件來管理代理是最清晰的方式。將代理設(shè)置為127.0.0.1:8080并確保Burpsuite的Proxy - Options里代理監(jiān)聽器Proxy Listeners是運(yùn)行在8080端口的。注意首次啟動(dòng)Burpsuite瀏覽器訪問網(wǎng)頁可能會(huì)提示證書錯(cuò)誤。這是因?yàn)锽urpsuite作為中間人需要生成自己的CA證書來解密HTTPS流量。你需要在瀏覽器中訪問http://burp下載CA證書并導(dǎo)入到瀏覽器的“證書管理機(jī)構(gòu)”中。這一步至關(guān)重要否則你抓不到HTTPS的包。2.2 Bruteforce_Test靶場(chǎng)部署實(shí)戰(zhàn)Bruteforce_Test靶場(chǎng)通常是一個(gè)簡(jiǎn)單的PHP或Python Web應(yīng)用。網(wǎng)上有很多開源版本核心就是提供一個(gè)帶有用戶名和密碼輸入框的登錄頁面后端邏輯就是比對(duì)固定的幾組憑證。為了模擬最真實(shí)的學(xué)習(xí)環(huán)境我建議你在本地自己搭建。假設(shè)你使用PHP環(huán)境一個(gè)最簡(jiǎn)單的靶場(chǎng)index.php代碼如下?php session_start(); $valid_users array(admin password123, test test123, user 123456); $username $_POST[username] ?? ; $password $_POST[password] ?? ; if (!empty($username) !empty($password)) { if (array_key_exists($username, $valid_users) $valid_users[$username] $password) { $_SESSION[loggedin] true; $_SESSION[username] $username; echo h1Login Successful! Welcome, $username./h1; } else { echo h1Login Failed! Invalid credentials./h1; } } ? form methodPOST Username: input typetext nameusernamebr Password: input typepassword namepasswordbr input typesubmit valueLogin /form將這段代碼保存放在你的PHP服務(wù)器根目錄比如XAMPP的htdocs或www目錄。訪問http://localhost/你的目錄/index.php就能看到登錄頁面。這個(gè)靶場(chǎng)預(yù)設(shè)了三組有效憑證admin/password123test/test123user/123456。我們的目標(biāo)就是通過Burpsuite的Intruder嘗試用字典暴力破解出其中任意一組。實(shí)操心得自己搭建靶場(chǎng)的好處是你可以完全控制后端邏輯。例如你可以修改代碼添加登錄失敗次數(shù)限制、延遲響應(yīng)等機(jī)制來模擬更真實(shí)的防護(hù)場(chǎng)景從而練習(xí)更高級(jí)的繞過技巧。這是直接使用現(xiàn)成在線靶場(chǎng)無法獲得的靈活度。3. 攻擊流程核心四步解析3.1 第一步精準(zhǔn)抓包與請(qǐng)求分析一切攻擊始于抓包。打開Burpsuite的Proxy - Intercept確保攔截是“Intercept is on”狀態(tài)。然后回到瀏覽器訪問你的本地靶場(chǎng)地址在登錄框中隨意輸入一個(gè)用戶名和密碼比如aaa和bbb點(diǎn)擊登錄。此時(shí)請(qǐng)求會(huì)被Burpsuite攔截。你會(huì)在Raw標(biāo)簽頁看到類似如下的HTTP POST請(qǐng)求POST /bruteforce_test/index.php HTTP/1.1 Host: localhost Content-Type: application/x-www-form-urlencoded Content-Length: 25 usernameaaapasswordbbb這個(gè)原始的請(qǐng)求數(shù)據(jù)包就是我們后續(xù)所有攻擊的“模板”。關(guān)鍵動(dòng)作來了右鍵點(diǎn)擊請(qǐng)求報(bào)文選擇“Send to Intruder”。這樣這個(gè)請(qǐng)求就被發(fā)送到了Intruder模塊等待我們配置攻擊。進(jìn)入Intruder - Positions標(biāo)簽頁。Burpsuite會(huì)自動(dòng)用§符號(hào)標(biāo)記一些它認(rèn)為可能是參數(shù)的部位。但自動(dòng)標(biāo)記往往不準(zhǔn)我們需要手動(dòng)清除并重新定義。點(diǎn)擊右邊的“Clear §”按鈕然后手動(dòng)選中aaa和bbb這兩個(gè)值分別點(diǎn)擊“Add §”按鈕。完成后你的請(qǐng)求應(yīng)該變成這樣username§aaa§password§bbb§這表示我們定義了兩個(gè)攻擊位置Payload Positionsusername和password。Intruder將會(huì)用我們提供的字典內(nèi)容替換這兩個(gè)§符號(hào)包裹的部分生成大量不同的請(qǐng)求進(jìn)行測(cè)試。注意事項(xiàng)很多新手會(huì)忽略Content-Length頭。當(dāng)你用不同長(zhǎng)度的Payload替換原始值時(shí)Content-Length會(huì)自動(dòng)變化嗎在Burpsuite的Intruder模塊中默認(rèn)情況下“Update Content-Length”這個(gè)選項(xiàng)是勾選的它會(huì)自動(dòng)重新計(jì)算并更新請(qǐng)求頭中的Content-Length值。這是一個(gè)非常貼心且重要的默認(rèn)設(shè)置確保你的請(qǐng)求格式始終正確。除非你有特殊需要否則不要取消它。3.2 第二步攻擊模式深度解讀與選型這是本次實(shí)戰(zhàn)的核心也是很多人最困惑的地方。Intruder提供了四種攻擊模式它們決定了Payload如何被應(yīng)用到多個(gè)攻擊位置上。選對(duì)模式事半功倍選錯(cuò)模式徒勞無功。#### 3.2.1 Sniper狙擊手模式這是最常用、最直觀的模式。它只有一個(gè)Payload集合Payload set。攻擊時(shí)它會(huì)用這個(gè)集合里的每一個(gè)Payload依次替換每一個(gè)攻擊位置而其他攻擊位置則保持你設(shè)置的原始值即aaa和bbb。適用場(chǎng)景當(dāng)你只有一個(gè)不確定的變量時(shí)。比如你知道用戶名是admin但不知道密碼或者你知道密碼是123456但不知道用戶名。這時(shí)你只需要標(biāo)記一個(gè)位置用戶名或密碼使用Sniper模式用一個(gè)字典去遍歷這個(gè)位置即可。在我們的靶場(chǎng)中如果我們假設(shè)用戶名是admin想爆破密碼那么就應(yīng)該只標(biāo)記password參數(shù)使用Sniper模式和一個(gè)密碼字典。#### 3.2.2 Battering ram攻城錘模式這個(gè)模式也只有一個(gè)Payload集合。它的特點(diǎn)是用Payload集合里的同一個(gè)值同時(shí)替換所有被標(biāo)記的攻擊位置。比如你標(biāo)記了username和password兩個(gè)位置Payload集合是[‘a(chǎn)dmin’ ‘test’ ‘root’]。那么Battering ram模式會(huì)生成三個(gè)請(qǐng)求usernameadminpasswordadminusernametestpasswordtestusernamerootpasswordroot適用場(chǎng)景非常特定即測(cè)試“用戶名和密碼是否相同”的情況。在實(shí)戰(zhàn)中確實(shí)存在一些系統(tǒng)默認(rèn)或用戶習(xí)慣設(shè)置用戶名密碼相同。但總體來說這個(gè)模式使用頻率較低。#### 3.2.3 Pitchfork草叉模式這是功能強(qiáng)大的模式。它為每一個(gè)攻擊位置分配一個(gè)獨(dú)立的Payload集合。攻擊時(shí)它會(huì)從每個(gè)Payload集合里按順序各取一個(gè)值組合成一個(gè)請(qǐng)求。假設(shè)我們標(biāo)記了兩個(gè)位置為位置1username配置了Payload集A:[‘a(chǎn)dmin’ ‘test’]為位置2password配置了Payload集B:[‘123456’ ‘password’]。Pitchfork模式會(huì)生成兩個(gè)請(qǐng)求usernameadminpassword123456取A[1]和B[1]usernametestpasswordpassword取A[2]和B[2]適用場(chǎng)景當(dāng)你擁有成對(duì)的、一一對(duì)應(yīng)的數(shù)據(jù)列表時(shí)。這是爆破登錄的“理想”模式。例如你通過信息收集得到了目標(biāo)系統(tǒng)的一批用戶名并且通過社工庫或默認(rèn)密碼規(guī)則為每個(gè)用戶名推測(cè)了一個(gè)最可能的密碼。這時(shí)你就可以使用Pitchfork模式將用戶名列表和對(duì)應(yīng)的密碼列表分別載入兩個(gè)Payload集進(jìn)行精準(zhǔn)的“撞庫”攻擊效率遠(yuǎn)高于盲目組合。#### 3.2.4 Cluster bomb集束炸彈模式這是最“暴力”的模式用于測(cè)試所有可能的組合。它同樣為每個(gè)攻擊位置分配獨(dú)立的Payload集合。攻擊時(shí)它會(huì)進(jìn)行笛卡爾積運(yùn)算即用第一個(gè)Payload集的每一個(gè)值去搭配第二個(gè)Payload集的每一個(gè)值以此類推。沿用上面的例子集束炸彈模式會(huì)生成四個(gè)請(qǐng)求usernameadminpassword123456usernameadminpasswordpasswordusernametestpassword123456usernametestpasswordpassword適用場(chǎng)景當(dāng)你沒有任何先驗(yàn)信息需要對(duì)用戶名和密碼進(jìn)行完全的交叉組合測(cè)試時(shí)。這是最經(jīng)典的“暴力破解”模式。但它的缺點(diǎn)是請(qǐng)求量會(huì)爆炸式增長(zhǎng)乘積關(guān)系。如果用戶名字典有1000個(gè)密碼字典有10000個(gè)那么總請(qǐng)求量就是1000萬。因此在使用此模式前務(wù)必精簡(jiǎn)你的字典?;氐紹ruteforce_Test靶場(chǎng)由于我們事先不知道任何有效憑證需要對(duì)用戶名和密碼進(jìn)行全組合測(cè)試因此Cluster bomb模式是我們的首選。接下來我們就基于此模式進(jìn)行配置。3.3 第三步Payloads字典配置的藝術(shù)選好Cluster bomb模式后切換到Intruder的Payloads標(biāo)簽頁。你會(huì)看到Payload set的編號(hào)因?yàn)槲覀儤?biāo)記了兩個(gè)位置所以會(huì)有Payload set 1和Payload set 2。Burpsuite默認(rèn)會(huì)將第一個(gè)標(biāo)記的位置username對(duì)應(yīng)set 1第二個(gè)password對(duì)應(yīng)set 2。#### 3.3.1 用戶名字典配置Payload set 1在Payload set 1的下拉菜單中選擇“Simple list”。這里就是粘貼或加載用戶名字典的地方。對(duì)于靶場(chǎng)練習(xí)一個(gè)精簡(jiǎn)的、常見的用戶名列表就足夠了。你可以手動(dòng)輸入也可以從文件加載。一個(gè)基礎(chǔ)的靶場(chǎng)用用戶名字典示例admin administrator test user root guest manager點(diǎn)擊“Paste”粘貼進(jìn)去或者點(diǎn)擊“Load...”從文本文件載入。關(guān)鍵技巧來了在實(shí)戰(zhàn)中用戶名字典的構(gòu)建依賴于信息收集。你可以從網(wǎng)站robots.txt、頁面源碼注釋、注冊(cè)頁面、甚至公司員工郵箱命名規(guī)則如姓名縮寫中收集潛在用戶名。對(duì)于Bruteforce_Test我們上面這個(gè)簡(jiǎn)單列表已經(jīng)覆蓋了靶場(chǎng)預(yù)設(shè)的有效用戶。#### 3.3.2 密碼字典配置Payload set 2在Payload set 2中同樣選擇“Simple list”。密碼字典是暴力破解的核心其質(zhì)量直接決定成敗。一個(gè)針對(duì)靶場(chǎng)和弱口令測(cè)試的基礎(chǔ)密碼字典應(yīng)包括空密碼(空行)超弱口令password,123456,admin,test,12345678,qwerty,abc123與用戶名相同 這是一個(gè)Payload選項(xiàng)我們稍后配置。簡(jiǎn)單變形password123,admin123,test123,123456789靶場(chǎng)預(yù)設(shè)密碼password123,test123,123456這是我們已知的答案用于驗(yàn)證流程將以上密碼列表粘貼到Payload set 2中。#### 3.3.3 高級(jí)Payload處理巧用“密碼用戶名”規(guī)則很多系統(tǒng)存在用戶將密碼設(shè)為與用戶名相同的情況。在Cluster bomb模式下如果我們想測(cè)試這種組合不需要在密碼字典里為每個(gè)用戶名重復(fù)添加一次。Burpsuite提供了強(qiáng)大的“Payload Processing”功能。在Payload set 2密碼集的底部找到“Payload Processing”區(qū)域點(diǎn)擊“Add”。規(guī)則選擇Add prefix 前綴留空。再點(diǎn)擊“Add”添加第二條規(guī)則Fetch from request-User-defined location-Base64-encode? 不這里有個(gè)更直接的方法。更簡(jiǎn)單的做法是使用“Recursive grep”功能但針對(duì)“密碼用戶名”這個(gè)需求最優(yōu)雅的配置其實(shí)在Payload set的類型里。我們可以為密碼集配置一個(gè)“Runtime file”類型的Payload然后在攻擊過程中動(dòng)態(tài)生成密碼。但這對(duì)新手稍復(fù)雜。一個(gè)更直觀的“土辦法”是直接在你的密碼字典最前面添加一個(gè)特殊的占位符比如{USER}。然后在Payload Processing中添加一條規(guī)則Substitute 將{USER}替換為來自Payload set 1的當(dāng)前用戶名。不過Burpsuite社區(qū)版的Payload Processing功能可能有限。對(duì)于靶場(chǎng)練習(xí)和大多數(shù)入門場(chǎng)景我建議采用一種更務(wù)實(shí)的方法將常見的用戶名也直接加入到密碼字典中。雖然這會(huì)讓密碼字典變大但在小規(guī)模測(cè)試中是可以接受的。你的密碼字典可以變成(空行) password 123456 admin test 12345678 qwerty abc123 password123 admin123 test123 123456789 # 直接把用戶名也當(dāng)作密碼測(cè)試一遍 admin test user這樣當(dāng)Cluster bomb運(yùn)行時(shí)就會(huì)自然組合出usernameadmin, passwordadmin這樣的請(qǐng)求。實(shí)操心得字典管理是門學(xué)問。永遠(yuǎn)不要用一個(gè)幾十MB的“萬能字典”開始爆破那會(huì)浪費(fèi)大量時(shí)間并可能觸發(fā)防護(hù)。我的習(xí)慣是準(zhǔn)備“三級(jí)字典”一級(jí)字典極精簡(jiǎn) 10-20個(gè)最常用的用戶名和密碼用于快速試探目標(biāo)是否存在極弱口令。二級(jí)字典場(chǎng)景化 根據(jù)目標(biāo)類型OA系統(tǒng)、CMS、路由器整理的數(shù)百個(gè)針對(duì)性口令。三級(jí)字典綜合大字典 在確認(rèn)目標(biāo)無速率限制和鎖定策略后作為最后手段使用。 對(duì)Bruteforce_Test我們用一級(jí)字典就夠了。3.4 第四步發(fā)起攻擊與結(jié)果甄別所有配置完成后點(diǎn)擊Intruder界面右上角的“Start attack”按鈕。Burpsuite會(huì)彈出一個(gè)新窗口開始發(fā)送攻擊請(qǐng)求。攻擊窗口的表格會(huì)實(shí)時(shí)顯示每個(gè)請(qǐng)求的序號(hào)、Payload組合、狀態(tài)碼、響應(yīng)長(zhǎng)度、響應(yīng)時(shí)間等信息。我們的核心任務(wù)就是從這海量的“失敗”請(qǐng)求中找出那個(gè)“成功”的請(qǐng)求。如何甄別主要看以下幾個(gè)列狀態(tài)碼Status 登錄成功和失敗返回的HTTP狀態(tài)碼可能不同。常見的是失敗返回200帶錯(cuò)誤信息成功可能返回302重定向到后臺(tái)或者返回200但內(nèi)容不同。但這并非絕對(duì)很多應(yīng)用成功失敗都返回200。響應(yīng)長(zhǎng)度Length這是最常用、最可靠的判斷指標(biāo)。登錄失敗的頁面通常會(huì)顯示“用戶名或密碼錯(cuò)誤”等固定文本因此響應(yīng)長(zhǎng)度是固定的。而登錄成功的頁面可能會(huì)顯示用戶昵稱、跳轉(zhuǎn)鏈接或不同的歡迎語導(dǎo)致響應(yīng)長(zhǎng)度與失敗頁面顯著不同。在攻擊結(jié)果表中點(diǎn)擊“Length”列進(jìn)行排序長(zhǎng)度與眾不同的那個(gè)請(qǐng)求極有可能就是成功的。響應(yīng)內(nèi)容 直接查看響應(yīng)Response的Raw數(shù)據(jù)搜索“歡迎”、“登錄成功”、“dashboard”等關(guān)鍵詞或者對(duì)比失敗響應(yīng)的HTML結(jié)構(gòu)。在我們的靶場(chǎng)攻擊中當(dāng)你看到有一個(gè)請(qǐng)求的響應(yīng)長(zhǎng)度與其他絕大多數(shù)請(qǐng)求明顯不同時(shí)點(diǎn)擊查看其響應(yīng)內(nèi)容你大概率會(huì)看到“Login Successful! Welcome, admin.”這樣的字樣。同時(shí)查看該請(qǐng)求的Payload列你會(huì)發(fā)現(xiàn)它使用的就是usernameadmin和passwordpassword123或其他有效組合。恭喜你至此你已經(jīng)成功使用Burpsuite的Cluster bomb模式完成了對(duì)Bruteforce_Test靶場(chǎng)的暴力破解。4. 四種攻擊模式在靶場(chǎng)上的對(duì)比實(shí)戰(zhàn)為了讓你徹底理解這四種模式的區(qū)別我們最好在同一個(gè)靶場(chǎng)上用不同的模式各操作一次對(duì)比其過程和結(jié)果。4.1 Sniper模式實(shí)戰(zhàn)已知用戶名的密碼爆破假設(shè)我們通過某種方式比如頁面提示、默認(rèn)配置得知靶場(chǎng)的有效用戶名之一是admin。我們的目標(biāo)就變成了爆破admin的密碼。抓包與標(biāo)記 像之前一樣抓取登錄請(qǐng)求。但這次我們只標(biāo)記password參數(shù)。即usernameadminpassword§bbb§。username參數(shù)保持為固定的admin不添加§符號(hào)。選擇模式 在Positions標(biāo)簽頁攻擊模式選擇“Sniper”。配置Payload 切換到Payloads標(biāo)簽頁現(xiàn)在你只有一個(gè)Payload set針對(duì)password位置。載入你的密碼字典可以比之前Cluster bomb用的密碼字典更大一些因?yàn)楝F(xiàn)在只需要遍歷密碼。發(fā)起攻擊 點(diǎn)擊Start attack。觀察結(jié)果通過響應(yīng)長(zhǎng)度差異找到正確的密碼password123。這個(gè)過程中請(qǐng)求總數(shù)等于你的密碼字典的行數(shù)。效率比Cluster bomb高得多。4.2 Battering ram模式實(shí)戰(zhàn)測(cè)試用戶名密碼相同這個(gè)模式在靶場(chǎng)中可能無法直接成功因?yàn)槲覀兊念A(yù)設(shè)賬戶密碼并不相同。但我們可以用它來測(cè)試“用戶名密碼相同”這個(gè)假設(shè)。抓包與標(biāo)記 同時(shí)標(biāo)記username和password兩個(gè)參數(shù)。選擇模式 選擇“Battering ram”。配置Payload 只有一個(gè)Payload set。載入一個(gè)用戶名列表例如[‘a(chǎn)dmin’ ‘test’ ‘user’ ‘root’]。發(fā)起攻擊 系統(tǒng)會(huì)生成admin/admin,test/test,user/user,root/root四個(gè)請(qǐng)求。在我們的靶場(chǎng)中這些組合都會(huì)失敗響應(yīng)長(zhǎng)度一致。這告訴我們靶場(chǎng)不存在用戶名密碼相同的賬戶。4.3 Pitchfork模式實(shí)戰(zhàn)使用成對(duì)憑證列表假設(shè)我們通過信息收集得到一份疑似有效的用戶名密碼對(duì)列表例如從其他泄露的類似系統(tǒng)中獲取admin:admin888 test:test999 user:pass2024 administrator:Password123抓包與標(biāo)記 同時(shí)標(biāo)記username和password。選擇模式 選擇“Pitchfork”。配置PayloadPayload set 1: 載入用戶名列表[‘a(chǎn)dmin’ ‘test’ ‘user’ ‘a(chǎn)dministrator’]Payload set 2: 載入密碼列表[‘a(chǎn)dmin888’ ‘test999’ ‘pass2024’ ‘Password123’]必須確保兩個(gè)列表的順序一一對(duì)應(yīng)發(fā)起攻擊 Burpsuite會(huì)生成四個(gè)請(qǐng)求admin/admin888,test/test999,user/pass2024,administrator/Password123。在我們的靶場(chǎng)中前三個(gè)都會(huì)失敗因?yàn)槊艽a不匹配。這個(gè)模式驗(yàn)證了我們的“撞庫”列表對(duì)此靶場(chǎng)無效。4.4 Cluster bomb模式實(shí)戰(zhàn)完全未知的暴力破解這就是我們最開始詳細(xì)演練的模式。它不依賴任何先驗(yàn)信息用用戶名字典和密碼字典進(jìn)行全組合測(cè)試。請(qǐng)求總量 用戶名字典大小 × 密碼字典大小。在靶場(chǎng)的小字典下瞬間完成在實(shí)戰(zhàn)的大字典下可能需要極長(zhǎng)時(shí)間并可能觸發(fā)警報(bào)。通過這四種模式的對(duì)比操作你應(yīng)該能深刻體會(huì)到選擇攻擊模式的本質(zhì)是基于你對(duì)目標(biāo)了解多少信息。信息越多攻擊就可以越精準(zhǔn)模式選擇就越具體。5. 高級(jí)技巧與實(shí)戰(zhàn)避坑指南掌握了基本操作我們來看看如何提升成功率和規(guī)避風(fēng)險(xiǎn)。這些技巧在實(shí)戰(zhàn)中至關(guān)重要。5.1 利用Grep-Match和Grep-Extract自動(dòng)化識(shí)別手動(dòng)看長(zhǎng)度和狀態(tài)碼畢竟效率低。Intruder提供了“Grep-Match”和“Grep-Extract”功能可以自動(dòng)從響應(yīng)中提取信息并做標(biāo)記。Grep-Match匹配關(guān)鍵詞在Intruder的Options標(biāo)簽頁找到“Grep-Match”區(qū)域。點(diǎn)擊“Add”輸入登錄失敗頁面特有的字符串比如“Login Failed”、“Invalid”、“錯(cuò)誤”。攻擊運(yùn)行時(shí)如果響應(yīng)中包含這些字符串該請(qǐng)求對(duì)應(yīng)的“Grep-Match”列會(huì)被打勾。那么沒有打勾的請(qǐng)求就可能是成功的。這能幫你快速篩選。同樣你也可以添加成功的關(guān)鍵詞如“Welcome”、“Logout”、“管理后臺(tái)”來直接標(biāo)記成功請(qǐng)求。Grep-Extract提取關(guān)鍵信息有時(shí)成功登錄后頁面會(huì)包含一些獨(dú)特信息比如用戶ID、會(huì)話令牌、郵箱片段。在“Grep-Extract”區(qū)域點(diǎn)擊“Add”Burpsuite會(huì)讓你選擇一個(gè)之前的響應(yīng)作為樣本。在樣本響應(yīng)中用鼠標(biāo)選中你想提取的信息比如“Welcome,admin”中的adminBurpsuite會(huì)自動(dòng)生成提取規(guī)則通常基于前后的文本。攻擊時(shí)它會(huì)嘗試從每個(gè)響應(yīng)中提取這個(gè)信息并顯示在結(jié)果表的“Grep-Extract”列。這對(duì)于批量測(cè)試時(shí)快速獲取成功憑證非常有用。5.2 應(yīng)對(duì)防護(hù)機(jī)制速率限制與賬戶鎖定真實(shí)的網(wǎng)站絕不會(huì)像靶場(chǎng)這樣“躺平”。常見的防護(hù)有速率限制Rate Limiting 單位時(shí)間內(nèi)來自同一IP的登錄請(qǐng)求過多會(huì)被暫時(shí)禁止或要求輸入驗(yàn)證碼。賬戶鎖定Account Lockout 連續(xù)多次登錄失敗后該賬戶會(huì)被鎖定一段時(shí)間。應(yīng)對(duì)策略降低頻率 在Intruder的Options - “Request Engine”中可以設(shè)置請(qǐng)求間隔Throttle。例如設(shè)置為500毫秒即每0.5秒發(fā)一個(gè)請(qǐng)求這能有效繞過簡(jiǎn)單的速率限制。使用代理池 在“Request Handling”中配置上游代理Upstream Proxy Servers將請(qǐng)求通過多個(gè)不同的代理IP發(fā)出分散請(qǐng)求來源?!暗吐佟惫?結(jié)合速率限制和超大字典將攻擊時(shí)間拉長(zhǎng)到數(shù)小時(shí)甚至數(shù)天模擬正常用戶的零星失敗登錄。優(yōu)先測(cè)試弱口令 使用前面提到的“三級(jí)字典”策略先用極小的字典試探避免一上來就觸發(fā)鎖定策略。如果發(fā)現(xiàn)某個(gè)賬戶幾次失敗后就無法登錄響應(yīng)內(nèi)容變化則將其從字典中暫時(shí)移除標(biāo)記為“可能被鎖定”。識(shí)別鎖定響應(yīng) 將“您的賬戶已被鎖定請(qǐng)30分鐘后重試”這類信息添加到Grep-Match中以便快速識(shí)別哪些賬戶觸發(fā)了鎖定從而調(diào)整策略。5.3 字典的優(yōu)化與生成字典是暴力破解的靈魂。除了從網(wǎng)上下載現(xiàn)成的字典自己生成針對(duì)性字典是高級(jí)玩家的必備技能?;谀繕?biāo)的字典生成公司名/產(chǎn)品名組合 如果目標(biāo)是某公司系統(tǒng)將公司名、產(chǎn)品名、品牌名與常見數(shù)字后綴2024, 123, 888、簡(jiǎn)單變形公司名首字母大寫后加!或組合。個(gè)人信息組合 通過社工收集到的目標(biāo)員工姓名、生日、電話號(hào)碼、車牌號(hào)等進(jìn)行組合變換??梢允褂肅runch、Cewl等工具。Cewl是一個(gè)可以爬取指定網(wǎng)站并生成基于其內(nèi)容的關(guān)鍵詞列表的工具這些關(guān)鍵詞常被用作密碼。使用Hashcat規(guī)則進(jìn)行變形你可以準(zhǔn)備一個(gè)基礎(chǔ)密碼種子文件如passwordadmin然后使用Hashcat的規(guī)則功能對(duì)種子進(jìn)行大量的變形大小寫轉(zhuǎn)換、前后加數(shù)字、符號(hào)替換等生成海量的變異密碼字典。雖然Burpsuite Intruder本身不支持規(guī)則但你可以先用其他工具生成最終字典再導(dǎo)入。字典去重與排序合并多個(gè)字典后一定要用sort -u命令Linux或相關(guān)工具去重。將最有可能成功的密碼如password123Admin2024放在字典文件的開頭以提高早期命中的概率。6. 完整實(shí)戰(zhàn)復(fù)盤與延伸思考讓我們回到Bruteforce_Test靶場(chǎng)進(jìn)行一次完整的、帶有策略的復(fù)盤攻擊。攻擊假設(shè)我們對(duì)靶場(chǎng)一無所知。攻擊目標(biāo)找出至少一對(duì)有效登錄憑證。策略選擇采用“低慢速”Cluster bomb攻擊先小后大。步驟一信息收集觀察登錄頁面無驗(yàn)證碼無錯(cuò)誤次數(shù)提示。初步判斷防護(hù)較弱。步驟二準(zhǔn)備極精簡(jiǎn)字典用戶名字典users.txt(5個(gè)):admin,test,user,administrator,root密碼字典pass_top50.txt(50個(gè)): 包含空密碼、123456、password、admin、test、12345678、qwerty以及它們的常見變形123、2024后綴等。步驟三配置攻擊抓包標(biāo)記username和password。攻擊模式Cluster bomb。Payload set 1 載入users.txt。Payload set 2 載入pass_top50.txt。Options - Grep-Match添加“Login Failed” (假設(shè)失敗頁面包含此文本)。Options - Request Engine: Throttle 設(shè)置為1000毫秒1秒1次。步驟四執(zhí)行與觀察點(diǎn)擊攻擊??傉?qǐng)求數(shù) 5 * 50 250個(gè)以每秒1個(gè)的速度大約4分鐘跑完。 在攻擊結(jié)果表中我們很快發(fā)現(xiàn)有幾個(gè)請(qǐng)求的“Grep-Match”列是空的且長(zhǎng)度不同。查看響應(yīng)確認(rèn)找到了admin/password123和test/test123。步驟五攻擊延伸如果我們第一次沒有用Top50密碼字典成功下一步不是盲目擴(kuò)大密碼字典。而是分析失敗響應(yīng) 是否所有賬戶的失敗響應(yīng)都一樣有沒有某個(gè)賬戶失敗提示不同如“密碼錯(cuò)誤” vs “用戶不存在”這可以幫助我們篩選出存在的用戶。切換模式 如果通過響應(yīng)差異找到了一個(gè)存在的用戶例如admin則立即停止Cluster bomb改用Sniper模式針對(duì)admin用戶使用更大的密碼字典進(jìn)行爆破。社會(huì)工程學(xué) 思考靶場(chǎng)可能使用的密碼。如果是教學(xué)靶場(chǎng)密碼很可能就是password123、test123這類。將其加入字典優(yōu)先級(jí)。通過這個(gè)完整的流程你將暴力破解從一個(gè)無腦的“跑字典”工具變成了一個(gè)需要觀察、分析、調(diào)整策略的智力活動(dòng)。Burpsuite的Intruder模塊提供的四種攻擊模式和豐富的配置選項(xiàng)正是為了支持這種靈活的測(cè)試思路。最后記住一點(diǎn)所有這些技術(shù)和工具僅限用于你擁有明確書面授權(quán)測(cè)試的系統(tǒng)或像Bruteforce_Test這樣的本地學(xué)習(xí)靶場(chǎng)。未經(jīng)授權(quán)的攻擊是違法行為。將你的技能用于安全建設(shè)、漏洞挖掘和防護(hù)提升才是正確的道路。