iT邦幫忙

2026 iThome 鐵人賽

DAY 28
0
自我挑戰組

滲透測試新手的 HTB Academy 30天學習日記系列 第 28 篇

Day 28 Burp - Intruder Attack Type 使用介紹及 Payload 設定的補充介紹

  • 分享至 

  • xImage
  •  

今天繼續來把 Attack Type 給補完,順便補充昨天沒講到的幾個 Payload 設定。

Payload 設定補充

昨天沒講到 Payload Type 選項,這邊我簡單介紹幾項。
https://ithelp.ithome.com.tw/upload/images/20261008/20183931i6PIDRhxRZ.png

  1. Simple list

這個就是我這次介紹時用的選項,這個選項特別的是自訂性很高 ( 因為全部都是自己輸入 ),可以輸入一些字典檔沒有但自己常常拿來測的字元。

Simple list 中還有一個 Payload Processing 可以再送出請求前對 Payload 做處理像是下面表格裡面的這樣。

Processing rule 用途 範例
Add prefix 前面加字串 admin → user_admin
Add suffix 後面加字串 admin → admin123
Match / Replace 找字串並取代 hello world → hello_world
Substring 只取 Payload 一部分 abcdef → abc
  1. Numbers

切換成 Numbers 後下面的介面就會變成這樣,最直觀的是可以限定一個數字範圍來做測試,可以用來測試 id . 頁碼 等等的參數。
From : 開始的數字。
To : 結束的數字。
Step : 可以決定每一次 Payload 間隔的數字。
https://ithelp.ithome.com.tw/upload/images/20261008/20183931s1csiHmNJV.png

例子 :
從 1 開始慢慢遞增到 50 結束。

From  : 1
To : 50
Step : 1
  1. Null payloads

如同字面意思沒有 Payload,一直重複寄一樣的請求,可以設定要重複幾次,用來觀察狀態變化。
https://ithelp.ithome.com.tw/upload/images/20261008/20183931Z0EThMwFoO.png

  1. Runtime file

從檔案即時抓 Payload 來測,適合要測試的 Payload 很多或已經自己有整理好的情況。
https://ithelp.ithome.com.tw/upload/images/20261008/20183931WImdIMKKwF.png

Sniper Attack 補充

昨天只講到 Sniper 針對一個 Position 時的用法,沒有提到如果是有大於一個 Position 時怎麼處理。

當 Position 大於一個時,Burp 會依序把 每一個Position都測試過每一個Payload 。

Position 是指會被替換成 Payload 的位置,這篇文章就都直接用 Position 來代稱。

  • 範例

Payload 有五個分別是 a . b . c . d . e 。
Position 有三個分別是 id . name . role 。
請求 :

/login?id=100&name=alice&role=normal

測試內容就會像這樣 ( 請求數量 = Position 數量 x Payload 數量 )。

id = a , name = alice , role = normal
id = b , name = alice , role = normal
id = c , name = alice , role = normal
id = d , name = alice , role = normal
id = e , name = alice , role = normal
id = 100 , name = a , role = normal
id = 100 , name = b , role = normal
id = 100 , name = c , role = normal
id = 100 , name = d , role = normal
id = 100 , name = e , role = normal
id = 100 , name = alice , role = a
id = 100 , name = alice , role = b
id = 100 , name = alice , role = c
id = 100 , name = alice , role = d
id = 100 , name = alice , role = e

實際例子

今天用來演示的靶機是 Lab: Basic SSRF against another back-end system。

請求的封包長這樣,由於封包裡面的 stockAPI 後面的網址是有被編碼過的所以不太好看出來實際的樣子。
我設定了兩個 Position 分別是在 productId 跟 storeId。

http://192.168.0.1:8080/product/stock/check?productId=§1§&storeId=§1§

https://ithelp.ithome.com.tw/upload/images/20261008/20183931myO8IGxPTt.png
Payload 的部分我是設定了五個。

1
2
3
4
5

Request count 由於有兩個 Position 所以會有 2 ( Position ) x 5 ( Payload ) 請求。
https://ithelp.ithome.com.tw/upload/images/20261008/20183931ucSxtNQGwk.png
結果可以看到 Intruder 送出了 10 個 request。
https://ithelp.ithome.com.tw/upload/images/20261008/20183931Lj5AKtBntk.png

Battering ram Attack

Battering ram 是直接 將一個Payload塞進所有的Position ,直接用例子說明。

  • 範例

Payload 有五個分別是 a . b . c . d . e 。
Position 有三個分別是 id . name . role 。
請求 :

/login?id=100&name=alice&role=normal

測試內容就會像這樣 ( 請求數量 = 1 x Payload 數量 )。

id = a , name = a , role = a
id = b , name = b , role = b
id = c , name = c , role = c
id = d , name = d , role = d
id = e , name = e , role = e

實際例子

跟上面 Sniper 的例子一樣 Position 跟 Payload 都一樣,只是 Battering ram 是同時一起用同一個Payload,所以只會送五個請求。
https://ithelp.ithome.com.tw/upload/images/20261008/20183931tXvkgRGUZ6.png
Payload :

1
2
3
4
5

https://ithelp.ithome.com.tw/upload/images/20261008/20183931epIHDfSFix.png
可以看到每次的 Request ,兩個 Position 都是用同一個 Payload。
https://ithelp.ithome.com.tw/upload/images/20261008/20183931pwy3yKB184.png

Pitchfork Attack

Pitchfork 跟前面兩者比較不同,一次是用 一組Payload放進對應的Position ,也就是說 Position 有幾個你就必須另外設計出幾個 Payload set。

  • 範例
  • Position 有三個分別是 id . name . role 。

Payload 有三項分別是 id . name . role 每個都可以設定個別的 Payload set。
id : 1 . 2 . 3 . 4 . 5 。
name : alice . bob . casssidy
role : normal . admin

請求 :

/login?id=100&name=alice&role=normal

測試內容就會像這樣 ( 請求數量 = 1 x Payload 數量最少的一項 )。

id = 1 , name = alice , role = normal
id = 2 , name = bob , role = admin

不一定要每一項 Payload 數量都一樣,Intruder 會按照最少的 Payload 為基準去送請求,假設最少的一個 Payload set 只有 4 個 Payload 其他多餘的就都只會用到它們的前四個 Payload。
像上面的範例 id 有 5 個 Payload;user 有 3 個 Payload;role 有 2 個 Payload,最少的一項是 role 只有兩個就只會測到第二個 Payload。

實際例子

Pitchfork 這邊封包一樣是沒什麼差異,也是兩個 Position。
https://ithelp.ithome.com.tw/upload/images/20261008/20183931awEIMBSScJ.png
Payload 的地方可以看到 Payload Position 的地方有選項可以選了,分別是 1-1 ( productId ) 跟 2-1 ( storeId )。
https://ithelp.ithome.com.tw/upload/images/20261008/20183931ENJIUkrkJK.png
我這邊是把兩邊的 Payload 做了一點區隔

// 1-1 Payload
1
2
3
4
5
// 2-1 Payload
6
7
8
9
10

1-1 的 Payload :
https://ithelp.ithome.com.tw/upload/images/20261008/20183931eW4aaAK32O.png
2-1 的 Payload :
https://ithelp.ithome.com.tw/upload/images/20261008/201839316y4mtZZOyJ.png
因為 Pitchfork 是兩個一組測用最少 Payload 為基準,兩邊的 Payload set 都是五個所以 Request count 是 5 。

結果 :
可以觀察出請求是按照順序。
1 搭配 6;2 搭配 7 ...... 。
https://ithelp.ithome.com.tw/upload/images/20261008/20183931FCEDcNGvTi.png

Cluster bomb Attack

Cluster bomb 跟 Pitchfork 一樣都是一組 Payload 放進對應的 Position,只是會嘗試 Payload 可能的排列組合,而不像 Pitchfork 只照順序測。

  • 範例
  • Position 有三個分別是 id . name 。

Payload 有三項分別是 id . name 每個都可以設定個別的 Payload set。
id : 1 . 2 . 3 . 4 . 5 。
name : alice . bob . casssidy

請求 :

/login?id=100&name=alice

測試內容就會像這樣 ( 請求數量 = 第一個 Position 的 Payload 數量 x 第二個 Position 的 Payload 數量 x ...... )。

id = 1 , name = alice
id = 1 , name = bob
id = 1 , name = casssidy
id = 2 , name = alice
id = 2 , name = bob
id = 2 , name = casssidy
id = 3 , name = alice
id = 3 , name = bob
id = 3 , name = casssidy
id = 4 , name = alice
id = 4 , name = bob
id = 4 , name = casssidy
id = 5 , name = alice
id = 5 , name = bob
id = 5 , name = casssidy

透過上面這個範例可以看得出來這個 type 請求的量是很大的,所以若是測試的 Position 或 Payload 很多,時間會拉得非常的長。

實際例子

請求的封包也是跟上面都一樣。
https://ithelp.ithome.com.tw/upload/images/20261008/201839315YukHUMf35.png
Payload 的部分
因為 Cluster bomb 是測所有 Payload 的組合,兩邊的 Payload set 都是五個所以 Request count 是 5 x 5。

1-1 Payload :
https://ithelp.ithome.com.tw/upload/images/20261008/20183931Erj9eiih33.png
2-1 Payload :
https://ithelp.ithome.com.tw/upload/images/20261008/20183931eDlA0lbKow.png

結果 :
總共發出了 25 個請求
https://ithelp.ithome.com.tw/upload/images/20261008/201839316M69Mk4XEU.png

總結

今天因為時間比較充裕就把四個直接介紹過一次順便多補充了一下 Payload Type 的部分,這邊四種 type 因為我自己也還沒有很熟,所以沒有辦法說出特定的 attack type 在哪些情境比較好用,等到之後打得靶機比較多了再回來做補充或者是另外做文章介紹。

到今天為止因為時間的關係 Burp 的章節我打算在這邊做一個收尾,明天打算來介紹一下靶機的資源跟一些推薦的文章,最後一天再來做 30 天的回顧跟做一個鐵人賽的總結,不知不覺走到這邊了希望後面兩天不要洩氣好好地走完,那今天就到這邊了,謝謝大家!

參考資料來源 & 延伸閱讀


上一篇
Day 27 Burp Intruder - Sniper attack 使用介紹
系列文
滲透測試新手的 HTB Academy 30天學習日記 共 28 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言