在第九周你已经初步认识了 Intruder 的基本操作,今天我们将彻底吃透它的四种攻击类型——Sniper、Battering ram、Pitchfork、Cluster bomb。这不仅关系到爆破效率,更直接影响多参数组合测试的成败。你将亲手用不同类型攻击同一表单,直观感受它们的差异。
第十周·周一:Burp Intruder 攻击类型详解——Sniper、Battering ram、Pitchfork、Cluster bomb
🎯 今日学习目标(达成效果)
- 能准确描述四种攻击类型的工作机制与适用场景,说出何时应选择 Sniper,何时必须使用 Cluster bomb;
- 能独立配置每种攻击类型,正确设置 Positions 和 Payloads,理解单个 payload 集与多个 payload 集的分配关系;
- 能在 DVWA 登录爆破场景中,分别使用 Sniper(已知用户名爆密码)和 Cluster bomb(同时爆破用户名和密码)完成弱口令测试;
- 能通过观察 Intruder 攻击窗口中的请求数量,验证不同攻击类型产生的请求数是否与理论一致;
- 能解释为什么错误的攻击类型会导致漏报或大量无效请求,从而优化自己的渗透效率;
- 能完成测试题:分别说出四种攻击类型的典型应用场景,并写出至少一个具体例子。
📘 一、Intruder 攻击类型的本质
当我们标记多个位置(Positions)并使用 Payload 替换它们时,Burp 需要决定如何组合这些 payload 值。这就是攻击类型的作用。四种类型由payload 集的数量和组合方式区分:
| 攻击类型 | 使用的 Payload 集数 | 行为 |
|---|---|---|
| Sniper | 1 个 | 每次只替换一个位置,其他位置保持原始值不变,轮流对所有位置使用同一个字典 |
| Battering ram | 1 个 | 同时将所有位置替换为相同的 payload 值(同一时刻所有位置取同一个 payload) |
| Pitchfork | 多个(每个位置对应一个集) | 各位置同步从各自的 payload 集中取值(第 N 个 payload 同时用于所有位置) |
| Cluster bomb | 多个(每个位置对应一个集) | 遍历所有组合(笛卡尔积),每个位置的 payload 相互组合 |
理解它们的核心区别,是避免浪费时间和产生误报的关键。
📘 二、Sniper(狙击手)—— 单参数逐个测试
1. 原理
使用一个 payload 集。如果标记了 N 个位置,Burp 会先对第一个位置使用字典中的所有值,其他位置保持原始值;然后对第二个位置使用字典,其他位置保持原始值…… 以此类推。总请求数 =N × 字典条目数。
适用场景:
- 已知其他参数正确,只想测试某一个参数是否脆弱(如知道用户名,只爆破密码)。
- 寻找多个参数中哪个参数存在注入点(在每个位置依次插入
'看报错)。
2. 配置示例:已知用户名爆破密码
- 抓取 DVWA 登录请求,发送到 Intruder。
- Positions:Clear 所有,然后仅将
password参数的值部分标记为§。 - 攻击类型选择Sniper。
- Payloads 加载常见密码列表(如
admin,password,123456…)。
结果:Burp 仅对密码位进行替换,请求数 = 密码字典长度。通过 Grep-Match 或响应长度找到正确密码。
📘 三、Battering ram(攻城锤)—— 一对多同时同值
1. 原理
使用一个 payload 集。每次请求,Burp 将所有标记位置替换为同一个 payload 值。总请求数 =字典条目数。
适用场景:
- 多个输入需要填入相同内容(例如新旧密码输入框需要一致)。
- 测试用户名和密码相同时的情况(如 admin/admin)。
2. 配置示例:新密码与确认密码一致
假设一个修改密码的表单有new_pass和confirm_pass两个字段,且两者必须相同才能生效。标记这两个字段,使用 Battering ram,加载密码字典。每次请求两个位置会被填入相同的密码。
📘 四、Pitchfork(叉子)—— 一一对应同步测试
1. 原理
使用多个 payload 集,每个位置绑定一个 payload 集。Burp 会同步地从各集中取第 N 个值,同时代入所有位置。就像叉子的齿同时前进。总请求数 =最小 payload 集条目数(一旦某个集用完就停止)。
适用场景:
- 测试多组已知的匹配数据,如已知多对用户名-密码(user1/pass1, user2/pass2…)。
- 需要将多个参数联动修改,且不同参数值间有对应关系。
2. 配置示例:多账户同时测试权限
Payload 集1 = 用户列表(user1, user2, user3),Payload 集2 = 对应密码(pass1, pass2, pass3)。使用 Pitchfork,第一请求 user1+pass1,第二请求 user2+pass2…
注意:Pitchfork 不会产生交叉组合,因此当你想用 user1 去尝试所有密码时,它做不到。此时需要 Cluster bomb。
📘 五、Cluster bomb(集束炸弹)—— 笛卡尔积全面爆破
1. 原理
使用多个 payload 集,Burp 会生成所有可能的组合(笛卡尔积)。总请求数 =各 payload 集条数的乘积。
适用场景:
- 同时爆破用户名和密码(不知道任何一方)。
- 同时测试多个参数的不同组合,以触发隐藏的漏洞或逻辑错误。
2. 配置示例:用户名+密码联合爆破
- 标记
username和password两个位置。 - Payload 集1:常见用户名(admin, root, test…)。
- Payload 集2:常见密码(123456, admin, password…)。
- 攻击类型选择Cluster bomb。
- 若用户名词典 5 条,密码字典 10 条,则总请求数为 50。
效率警告:Cluster bomb 请求量可能爆炸式增长,实际渗透中需控制字典规模或使用精确字典。
✍️ 六、动手实践:DVWA 登录爆破对比实验
环境:DVWA 安全等级 Low,已配置好 Burp 代理。
实践 1:Sniper 爆破已知用户密码
- 在 DVWA 登录页用任意密码尝试登录(如
admin:test),抓取 POST 请求,Send to Intruder。 - Positions:仅标记密码值
§test§,攻击类型 Sniper。 - Payloads:加载 Top 10 密码字典。
- Start attack,找到响应长度不同的请求,即为正确密码。
实践 2:Cluster bomb 同时爆破用户名和密码
- 同一请求,恢复原始值,Positions 同时标记用户名值和密码值。
- 攻击类型选择 Cluster bomb。
- Payload 集1:常见用户名(admin, user, test)。
- Payload 集2:常见密码(admin, password, 123456, pass)。
- 攻击,预计请求数 3×4=12。在结果中寻找登录成功的响应。
实践 3:Battering ram 同步测试
假设需要测试“用户名和密码相同”的情况(如 admin/admin)。标记用户名和密码位置,使用 Battering ram,加载包含admin的字典。每个请求两个位置都填入admin。验证账号。
实践 4:Pitchfork 已知多组账户
如果你知道三组账户:(admin/admin123),(user1/pass1),(test/test),将它们分别放入两个 payload 集,使用 Pitchfork 方式同时测试,请求数等于 3。
总结:填写下表,加深印象。
| 攻击类型 | 请求数计算 | 何时使用 |
|---|---|---|
| Sniper | N位置 × M字典 | 单参数未知,或逐一测试 |
| Battering ram | M字典 | 多个参数取相同值 |
| Pitchfork | min(各字典长度) | 参数间一一对应 |
| Cluster bomb | 各字典长度乘积 | 参数无已知关联,需穷举组合 |
📝 七、课后测试题与解析
测试题 1:说明 Sniper 和 Cluster bomb 的区别,并各举一个适合的应用场景。
参考答案:
- Sniper使用一个 payload 集,每次只替换一个位置,其他位置保持原样。适合已知其他参数正确,仅测试一个参数的场景,比如已知用户名
admin,仅爆破密码。 - Cluster bomb使用多个 payload 集,生成所有组合(笛卡尔积)。适合所有参数都未知且需要联合爆破的场景,比如同时爆破用户名和密码。
测试题 2:如果一个表单有 3 个输入框都需要测试,但三者必须填入相同的值(如“重复输入密码确认”),应选用哪种攻击类型?为什么?
参考答案:
应选用Battering ram。因为它只使用一个 payload 集,每次请求将所有标记位置替换为相同的值。如果使用其他类型,可能导致三个位置值不同而无法通过一致性校验。
✅ 今日学习效果自检清单
- 我能画出四种攻击类型的工作流程图
- 我分别使用 Sniper 和 Cluster bomb 在 DVWA 上完成了登录爆破
- 我理解 Battering ram 适用于多个字段需相同值的场景
- 我知道 Pitchfork 适合已知一一对应关系的数据集
- 我能在 Intruder 界面中准确设置 Positions 和 Payload 集数量,不再混淆
⚠️ 阶段避坑重点
- 攻击类型误选:用 Sniper 去同时爆破用户名和密码,会导致仅有一个字段被替换,另一个永远不变,错失有效组合。
- Cluster bomb 请求爆炸:3 个参数各 100 条字典就产生 1,000,000 次请求,可能压垮目标或触发锁机制。务必控制字典大小或分步测试。
- 注意顺序:在 Pitchfork 中,payload 集的顺序必须与标记位置的顺序对应,否则会张冠李戴。
- 不要忘记 Grep-Match:尤其是 Cluster bomb 时,请求数量多,必须靠成功关键字或响应长度差异来快速定位成功项。
明天我们将学习 Burp 的宏与 Session 处理,用来解决“爆破过程中会话失效”的问题,实现登录状态的自动维持。今天你爆破时可能遇到 Cookie 过期,明天就是解决方案。请保留今天的实验环境,明日继续。