第2章 Burp Suite Intruder 高级攻击
Burp Suite Intruder 是 Web 安全测试中最强大的自动化攻击引擎之一。本章深入剖析四种核心攻击类型以及自定义 Payload 位置的高级技巧,帮助你在渗透测试中精准、高效地挖掘漏洞。
1. 集束炸弹攻击 (Cluster Bomb)
集束炸弹模式为每个 Payload 位置分配独立的字典,执行笛卡尔积组合。适用于需要同时爆破多个参数且参数之间无依赖关系的场景,例如登录表单的用户名与密码组合爆破。
典型场景:爆破登录接口 /api/login,用户名列表 50 个,密码列表 100 个,Token 列表 5 个,总请求数 = 50×100×5 = 25,000。
POST /api/login HTTP/1.1
Host: target.com
Content-Type: application/json
{"username":"§user§","password":"§pass§","csrf":"§token§"}
2. Sniper 攻击 (狙击手)
Sniper 模式使用单一字典,依次替换每个 Payload 位置。当有多个位置时,每个位置独立循环整个字典,其他位置保持初始值。适合测试单个参数对漏洞的影响。
示例:测试 IDOR 漏洞,依次替换用户ID参数。
GET /api/user/§id§/profile HTTP/1.1
Host: target.com
字典:[1001, 1002, 1003, …],每个 ID 发送一个请求,其他位置不变。
3. Pitchfork 攻击 (草叉)
Pitchfork 模式为每个 Payload 位置分配独立的字典,但按索引同步取值:第 i 个请求使用每个字典的第 i 个值。适用于参数之间存在对应关系的场景,如用户名与密码一一对应。
典型场景:已知一组泄露的凭证对,逐对测试。
POST /auth/login HTTP/1.1
Host: target.com
username=§user§&password=§pass§
字典A:[alice, bob, charlie],字典B:[pass1, pass2, pass3] → 仅 3 个请求。
4. Battering ram 攻击 (攻城锤)
Battering ram 模式使用同一个字典,所有 Payload 位置同时被替换为相同的值。适用于需要同步修改多个参数的情况,例如同时修改 Cookie 和 POST 体中的 session ID。
示例:同时替换 CSRF token 在 Header 和 Body 中的位置。
POST /transfer HTTP/1.1
Host: target.com
X-CSRF-Token: §token§
amount=100&csrf=§token§
5. 自定义 Payload 位置
Intruder 允许在请求的任意位置插入 Payload 标记 §,包括 URL 路径、请求头、Cookie、JSON/XML 体等。高级技巧包括:
- 多位置嵌套:在同一个参数内使用多个 § 标记,实现部分替换。
- Payload 处理规则:对字典值进行编码、大小写转换、前缀/后缀添加等。
- 递归 grep:从响应中提取动态值并用于后续请求。
高级技巧:使用 Payload 位置编辑器 精细控制每个位置的编码方式,例如对路径参数进行 URL 编码,对 JSON 值进行 Unicode 转义。
攻击类型对比
| 攻击类型 | 字典数量 | 组合方式 | 请求数公式 | 典型场景 |
|---|---|---|---|---|
| 集束炸弹 | 多个 | 笛卡尔积 | n₁ × n₂ × … | 多参数独立爆破 |
| Sniper | 1 个 | 依次替换每个位置 | 位置数 × 字典大小 | 单参数 fuzz |
| Pitchfork | 多个 | 按索引同步 | max(n₁, n₂, …) | 凭证对测试 |
| Battering ram | 1 个 | 所有位置相同值 | 字典大小 | 同步 token 替换 |
实战建议
- 集束炸弹慎用大字典,避免产生海量请求导致封禁。
- Sniper适合漏洞验证,配合 Grep – Match 快速定位异常响应。
- Pitchfork需确保各字典长度一致,否则多余值被忽略。
- Battering ram常用于 CSRF 或 Session 同步测试。
- 善用 Payload 处理规则(如 Add prefix/suffix、Encode)减少手动工作。