☰
【八个月网安课程】第十周·周一:Burp Intruder 攻击类型详解——Sniper、Battering ram、Pitchfork、Cluster bomb
2026/10/11 1:45:26 网站建设 项目流程

在第九周你已经初步认识了 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 集数行为
Sniper1 个每次只替换一个位置,其他位置保持原始值不变,轮流对所有位置使用同一个字典
Battering ram1 个同时将所有位置替换为相同的 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 爆破已知用户密码

  1. 在 DVWA 登录页用任意密码尝试登录(如admin:test),抓取 POST 请求,Send to Intruder。
  2. Positions:仅标记密码值§test§,攻击类型 Sniper。
  3. Payloads:加载 Top 10 密码字典。
  4. Start attack,找到响应长度不同的请求,即为正确密码。

实践 2:Cluster bomb 同时爆破用户名和密码

  1. 同一请求,恢复原始值,Positions 同时标记用户名值和密码值。
  2. 攻击类型选择 Cluster bomb。
  3. Payload 集1:常见用户名(admin, user, test)。
  4. Payload 集2:常见密码(admin, password, 123456, pass)。
  5. 攻击,预计请求数 3×4=12。在结果中寻找登录成功的响应。

实践 3:Battering ram 同步测试

假设需要测试“用户名和密码相同”的情况(如 admin/admin)。标记用户名和密码位置,使用 Battering ram,加载包含admin的字典。每个请求两个位置都填入admin。验证账号。

实践 4:Pitchfork 已知多组账户

如果你知道三组账户:(admin/admin123),(user1/pass1),(test/test),将它们分别放入两个 payload 集,使用 Pitchfork 方式同时测试,请求数等于 3。

总结:填写下表,加深印象。

攻击类型请求数计算何时使用
SniperN位置 × M字典单参数未知,或逐一测试
Battering ramM字典多个参数取相同值
Pitchforkmin(各字典长度)参数间一一对应
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 过期,明天就是解决方案。请保留今天的实验环境,明日继续。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询