Burp Suite Intruder 自動化攻擊

深入介紹 Burp Suite Intruder 模組的功能與實戰應用

Intruder 功能介紹

Intruder 是 Burp Suite 中最強大的自動化攻擊工具之一。它允許滲透測試人員對 HTTP 請求中的特定位置進行自動化測試,透過大量的 payload 來發現潛在的安全漏洞。

主要用途

  • 暴力破解:對登入頁面進行密碼猜測攻擊
  • 參數模糊測試(Fuzzing):測試輸入驗證和邊界條件
  • 漏洞探測:自動化測試 SQL 注入、XSS 等漏洞
  • 列舉攻擊:發現隱藏的資源、使用者帳號等
  • 資料擷取:從回應中提取敏感資訊

介面概覽

Intruder 模組主要分為四個標籤頁:

標籤頁功能說明
Target設定目標主機和連接埠
Positions定義請求中要進行攻擊的位置
Payloads設定要使用的攻擊載荷
Options設定攻擊選項和結果處理

攻擊類型

Intruder 提供四種不同的攻擊類型,每種類型適用於不同的測試場景。

1. Sniper(狙擊手)

Sniper 是最基本的攻擊類型,它會逐一對每個標記的位置進行測試。

特點:

  • 一次只測試一個位置
  • 其他位置保持原始值
  • 適合單一參數的模糊測試

範例: 假設有兩個標記位置 §username§§password§,payload 列表為 [A, B, C]

請求編號usernamepassword
1A(原始值)
2B(原始值)
3C(原始值)
4(原始值)A
5(原始值)B
6(原始值)C

使用場景:

  • 測試單一輸入欄位的漏洞
  • 參數模糊測試
  • 識別有效的使用者名稱

2. Battering Ram(攻城錘)

Battering Ram 會將相同的 payload 同時套用到所有標記的位置。

特點:

  • 所有位置使用相同的 payload
  • 適合需要在多處使用相同值的情況

範例: 同樣的兩個位置和 payload 列表:

請求編號usernamepassword
1AA
2BB
3CC

使用場景:

  • CSRF token 測試
  • 需要在請求的多個位置使用相同值

3. Pitchfork(叉子)

Pitchfork 允許為每個位置設定不同的 payload 列表,並平行地進行測試。

特點:

  • 每個位置有獨立的 payload 列表
  • 各列表同步遍歷(第一個配第一個,第二個配第二個)
  • 請求數量等於最短 payload 列表的長度

範例: 位置 1 的 payload:[admin, user, guest] 位置 2 的 payload:[pass1, pass2, pass3]

請求編號usernamepassword
1adminpass1
2userpass2
3guestpass3

使用場景:

  • 測試已知的使用者名稱和密碼組合
  • 憑證填充攻擊(Credential Stuffing)
  • 關聯資料測試

4. Cluster Bomb(集束炸彈)

Cluster Bomb 會對所有位置的 payload 進行完全排列組合。

特點:

  • 測試所有可能的 payload 組合
  • 請求數量為各 payload 列表長度的乘積
  • 計算量最大,但覆蓋最全面

範例: 位置 1 的 payload:[admin, user] 位置 2 的 payload:[pass1, pass2, pass3]

請求編號usernamepassword
1adminpass1
2adminpass2
3adminpass3
4userpass1
5userpass2
6userpass3

使用場景:

  • 暴力破解登入頁面
  • 多參數漏洞測試
  • 完整的組合測試

Payload 設定

Payload 是 Intruder 攻擊的核心,正確設定 payload 對攻擊效果至關重要。

Payload 類型

Burp Suite 提供多種 payload 類型:

1. Simple List(簡單列表)

手動輸入或載入 payload 列表。

1
2
3
4
5
admin
administrator
root
user
guest

設定方式:

  1. 在 Payloads 標籤頁選擇 Payload type: Simple list
  2. 手動輸入或使用「Load」按鈕載入檔案
  3. 可使用「Add from list」載入內建列表

2. Numbers(數字)

產生數字序列,適合列舉攻擊。

設定參數:

  • From:起始數字
  • To:結束數字
  • Step:遞增步長
  • Format:數字格式(如:十進制、十六進制)

範例:

  • 測試 ID 參數:/user?id=§1§ 從 1 到 1000

3. Brute Forcer(暴力破解器)

根據字元集產生所有可能的組合。

設定參數:

  • Character set:使用的字元集
  • Min length:最小長度
  • Max length:最大長度

範例字元集:

  • 小寫字母:abcdefghijklmnopqrstuvwxyz
  • 數字:0123456789
  • 特殊字元:!@#$%^&*()

4. Runtime File(執行時檔案)

從外部檔案讀取 payload,適合大型字典。

優點:

  • 記憶體效率高
  • 支援大型字典檔案
  • 即時讀取,不需預載

5. Dates(日期)

產生日期格式的 payload。

設定參數:

  • From:起始日期
  • To:結束日期
  • Step:間隔天數
  • Format:日期格式(如:YYYY-MM-DD

Payload Processing(處理規則)

可以對 payload 進行預處理:

規則類型說明
Add prefix新增前綴
Add suffix新增後綴
Match/Replace取代特定字串
Encode編碼(URL、Base64 等)
Hash雜湊處理(MD5、SHA 等)
Case modification大小寫轉換

範例: 將密碼進行 MD5 雜湊後再發送:

  1. 新增處理規則:Hash > MD5
  2. payload password123 會變成 482c811da5d5b4bc6d497ffa98491e38

Payload Encoding(編碼設定)

預設情況下,Intruder 會對特殊字元進行 URL 編碼。

設定位置: Payloads > Payload Encoding

可以選擇:

  • 啟用/停用 URL 編碼
  • 自訂需要編碼的字元

結果分析

攻擊完成後,需要分析結果以識別成功的請求或潛在漏洞。

結果視窗欄位

欄位說明
Request請求編號
Payload使用的 payload 值
StatusHTTP 狀態碼
Error錯誤資訊
Timeout是否逾時
Length回應長度
Comment備註

分析技巧

1. 依據狀態碼篩選

  • 200 OK:請求成功
  • 302 Found:重新導向(可能登入成功)
  • 401/403:認證失敗或禁止存取
  • 500:伺服器錯誤(可能觸發漏洞)

2. 依據回應長度篩選

不同的回應長度通常表示不同的處理結果:

  • 登入成功的回應通常與失敗不同
  • 有效使用者名稱可能產生不同長度的錯誤訊息

操作步驟:

  1. 點擊「Length」欄位排序
  2. 找出異常的回應長度
  3. 檢視對應的請求和回應

3. 使用 Grep Match

自動標記包含特定字串的回應:

設定位置: Options > Grep - Match

範例:

  • 搜尋「Login successful」標記成功登入
  • 搜尋「error」或「exception」標記錯誤

4. 使用 Grep Extract

從回應中提取特定資料:

設定位置: Options > Grep - Extract

範例:

  • 提取 CSRF token
  • 提取錯誤訊息內容
  • 提取使用者資訊

匯出結果

可以將攻擊結果匯出以進行進一步分析:

  1. 選擇「Save」選項
  2. 選擇匯出格式(XML、CSV 等)
  3. 選擇要匯出的欄位

實戰範例

範例一:暴力破解登入頁面

目標: 對登入頁面進行密碼猜測攻擊

步驟:

  1. 攔截登入請求

    使用 Proxy 攔截正常的登入請求:

    1
    2
    3
    4
    5
    
    POST /login HTTP/1.1
    Host: example.com
    Content-Type: application/x-www-form-urlencoded
    
    username=admin&password=test
    
  2. 發送到 Intruder

    右鍵選擇「Send to Intruder」

  3. 設定攻擊位置

    在 Positions 標籤頁中,清除所有標記後,只標記密碼位置:

    1
    
    username=admin&password=§test§
    
  4. 選擇攻擊類型

    選擇「Sniper」模式

  5. 設定 Payload

    載入常用密碼字典:

    • 使用內建列表:Passwords
    • 或載入外部字典檔案(如 rockyou.txt)
  6. 設定 Grep Match

    新增成功標記字串:

    • Welcome
    • Dashboard
    • Login successful
  7. 開始攻擊

    點擊「Start attack」

  8. 分析結果

    • 檢查標記為成功的請求
    • 注意回應長度異常的請求
    • 檢查 302 重新導向的請求

範例二:列舉有效使用者名稱

目標: 透過錯誤訊息差異發現有效的使用者名稱

步驟:

  1. 分析錯誤訊息

    觀察不同情況的錯誤訊息:

    • 無效使用者:「User does not exist」
    • 有效使用者但密碼錯誤:「Invalid password」
  2. 設定攻擊

    標記使用者名稱位置:

    1
    
    username=§admin§&password=wrongpassword
    
  3. 設定 Payload

    載入使用者名稱字典或常見名稱列表

  4. 設定 Grep Match

    新增「Invalid password」作為有效使用者的標記

  5. 分析結果

    被標記的請求表示使用者名稱有效

範例三:參數模糊測試發現 SQL 注入

目標: 測試參數是否存在 SQL 注入漏洞

步驟:

  1. 準備 SQL 注入 payload

    建立 SQL 注入測試列表:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    '
    ''
    '--
    ' OR '1'='1
    ' OR '1'='1'--
    ' UNION SELECT NULL--
    1 OR 1=1
    1' OR '1'='1
    admin'--
    '; DROP TABLE users--
    
  2. 設定攻擊位置

    標記可疑參數:

    1
    
    GET /search?id=§1§ HTTP/1.1
    
  3. 設定 Grep Match

    新增常見的 SQL 錯誤訊息:

    • SQL syntax
    • mysql_fetch
    • ORA-
    • PostgreSQL
    • SQLite
    • ODBC
  4. 分析結果

    • 檢查包含錯誤訊息的回應
    • 注意回應時間異常的請求(可能是時間盲注)
    • 檢查回應內容的變化

範例四:目錄暴力列舉

目標: 發現隱藏的網站目錄和檔案

步驟:

  1. 設定攻擊請求

    1
    2
    
    GET /§admin§ HTTP/1.1
    Host: example.com
    
  2. 設定 Payload

    載入目錄字典:

    • admin
    • backup
    • config
    • test
    • api
    • uploads
    • .git
  3. 篩選結果

    • 狀態碼 200:目錄存在
    • 狀態碼 301/302:目錄存在但重新導向
    • 狀態碼 403:目錄存在但禁止存取

進階技巧

1. 使用 Macros 處理 Session

當目標網站需要有效的 Session 時:

  1. 前往 Project options > Sessions
  2. 新增 Session Handling Rule
  3. 設定 Macro 自動獲取新的 Session

2. 繞過速率限制

策略:

  • 調整請求間隔時間
  • 使用多個 IP 地址
  • 在 Resource Pool 中設定並發數

設定位置: Options > Request Engine

3. 結合 Extension

使用 BApp Store 的擴充套件增強功能:

  • Turbo Intruder:高速攻擊引擎
  • Autorize:自動化授權測試
  • Param Miner:隱藏參數發現

注意事項

法律與道德考量

  • 取得授權:務必在測試前取得書面授權
  • 測試範圍:只對授權範圍內的目標進行測試
  • 避免損害:注意攻擊可能對目標系統造成的影響

效能考量

  • 控制請求速率:避免對目標造成 DoS
  • 設定適當的超時時間:避免長時間等待無回應的請求
  • 監控資源使用:大規模攻擊可能消耗大量記憶體

Community vs Professional 版本差異

功能CommunityProfessional
攻擊速度有限制無限制
並發請求有限制可自訂
儲存專案僅暫存完整儲存

總結

Burp Suite Intruder 是一個功能強大的自動化攻擊工具。本文介紹了:

  1. 四種攻擊類型:Sniper、Battering Ram、Pitchfork、Cluster Bomb
  2. Payload 設定:多種類型和處理規則
  3. 結果分析:狀態碼、回應長度、Grep 匹配
  4. 實戰範例:暴力破解、使用者列舉、SQL 注入測試

掌握 Intruder 的使用技巧,可以大幅提升滲透測試的效率。建議搭配 Repeater 進行手動驗證,確保測試結果的準確性。

參考資源

comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy