在 Burp Intruder 中执行 Sniper 攻击

Beginner
立即练习

引言

在本实验中,你将学习如何执行“Sniper”攻击,这是 Burp Suite Intruder 工具中最基本且常用的攻击类型之一。Burp Intruder 是一个强大的工具,用于自动化针对 Web 应用程序的定制攻击,以识别和利用安全漏洞。

Sniper 攻击旨在遍历一个 Payload 列表,将它们逐个插入到 HTTP 请求中的单个指定位置。这使其非常适合执行诸如猜测用户名、查找密码重置令牌或模糊单个参数以查找漏洞等任务。

我们将逐步介绍将请求发送到 Intruder、配置 Payload 位置、选择 Sniper 攻击类型、加载简单的 Payload 列表,最后启动攻击并分析结果的过程。在本实验中,Burp Suite 已安装在环境中。

在 Intruder > Positions 中,选择一个参数值并点击“Add §”

在此步骤中,你将定义攻击的目标。将请求发送到 Intruder 后,你需要精确指定 Payload 的插入位置。

首先,你需要有一个可用的请求。在本实验中,我们将假设你已在 Burp Proxy 中拦截了一个登录请求,并将其发送到 Intruder(通过右键单击请求并选择“Send to Intruder”)。Intruder 中的请求可能如下所示:

POST /login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

username=myuser&password=mypass

默认情况下,Burp Intruder 会自动在它认为请求中有趣的部分周围添加 Payload 标记(§)。为了获得精确的控制,最好清除这些标记并设置自己的标记。

  1. 导航到 Intruder > Positions 选项卡。
  2. 点击右侧的 Clear § 按钮,移除所有自动添加的 Payload 标记。
  3. 在请求编辑器中,使用鼠标仅高亮显示 username 参数的值(在本例中为 myuser)。
  4. 高亮显示该值后,点击 Add § 按钮。

你的请求现在应该如下所示,只有用户名值被标记为 Payload 位置:

POST /login HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 27

username=§myuser§&password=mypass

这会告诉 Intruder 只在 myuser 的位置插入 Payload,在每次尝试时保持请求的其余部分不变。

将攻击类型设置为“Sniper”

在此步骤中,你将为你的目标选择合适的攻击类型。Burp Intruder 提供四种不同的攻击类型,每种都有不同的用途。在本实验中,我们将使用 Sniper

以下是攻击类型的简要概述:

  • Sniper: 使用单个 Payload 集。它逐个定位每个 Payload 位置(§...§)。对于每个位置,它会遍历列表中的每个 Payload。这是模糊单个参数最常用的类型。
  • Battering ram: 使用单个 Payload 集。它同时将相同的 Payload 插入所有定义的 Payload 位置。
  • Pitchfork: 使用多个 Payload 集。对于每个请求,它从每个集中取一个 Payload,并将它们放入相应的 Payloads 位置。
  • Cluster bomb: 使用多个 Payload 集。它测试所有集合中 Payload 的所有可能组合。

由于我们的目标是在单个参数中测试一系列不同的用户名,因此 Sniper 是完美的选择。

要设置攻击类型:

  1. 保持在 Intruder > Positions 选项卡中。
  2. 找到屏幕顶部的 Attack type 下拉菜单。
  3. 点击下拉菜单,然后从列表中选择 Sniper

你现在已将 Intruder 配置为使用 Sniper 攻击方法。

导航到 Intruder > Payloads 选项卡

在此步骤中,你将进入定义攻击实际使用数据的部分。既然你已经配置了目标位置(username)和攻击类型(Sniper),下一步就是提供 Payload 列表。

Payloads 是 Intruder 将替换你在步骤 1 中定义的 §...§ 位置的值。

要继续,只需导航到 Intruder 工具中的 Payloads 子选项卡。你会发现它就在你刚才操作的 Positions 选项卡旁边。点击此选项卡将带你进入 Payload 配置屏幕,在下一步中你将在那里设置你的潜在用户名列表。

加载简单的 Payload 列表(例如:admin, test, user)

在此步骤中,你将配置攻击的 Payload 列表。由于我们的攻击类型是 Sniper 并且只有一个 Payload 位置,我们只需要配置一个 Payload 集。

Intruder > Payloads 选项卡中,你将看到 Payload SetsPayload Options 部分。

  1. Payload Sets 部分下,确保 Payload set 设置为 1Payload type 设置为 Simple list。这是默认设置,用于提供一个简单的字符串列表。
  2. Payload Options [Simple list] 部分下,你将添加你的 Payloads。你可以直接在文本框中输入,或使用 Add 按钮。

让我们添加一些常见的用户名进行测试:
在文本区域中,输入以下值,每行一个:

admin
test
user
root
guest

你的 Payload Options 部分现在应该包含此列表。Intruder 将为列表中的每一行发送一个请求,将该值替换为你之前标记的 username 参数。底部的 Payload Count 现在应该显示 5

发起攻击并观察结果表

在此步骤中,你将发起已配置的攻击并分析结果。在位置、攻击类型和 Payloads 都设置好之后,你就可以开始了。

  1. 要发起攻击,请点击位于 Intruder 选项卡右上角的 Start attack 按钮。
  2. 一个新的“Attack”窗口将打开,显示一个结果表。该窗口会随着 Intruder 发送每个请求而实时填充数据。

结果表是整个过程中最重要的部分。请密切关注各个列,特别是:

  • Payload: 该请求使用的特定 Payload(例如:admin, test)。
  • Status: 响应的 HTTP 状态码(例如:200, 302, 401)。
  • Length: 响应体的大小(以字节为单位)。

要查找潜在的漏洞或有效的用户名,请寻找异常。例如,成功的登录可能会导致 302 Found 状态(重定向到仪表板),而所有失败的尝试都会导致 200 OK(重新显示登录页面)。同样,一个有效用户名的响应可能与其他响应的 Length 不同,因为错误消息发生了变化(例如,“Incorrect password”vs. “User not found”)。

通过按 StatusLength 列对表格进行排序,你可以轻松地发现任何与基线不同的响应,这可能表明存在潜在的发现。

总结

在本实验中,你成功使用 Burp Intruder 执行了一个基础的 Sniper 攻击。这是任何 Web 应用程序安全测试人员的一项基本技能。

你学会了如何:

  • 通过清除默认标记并添加自己的标记,在 Positions 选项卡中隔离一个特定的请求参数进行测试。
  • 将攻击类型设置为 Sniper,这非常适合使用 Payload 列表测试单个参数。
  • 导航到 Payloads 选项卡并加载一个简单的自定义输入列表。
  • 发起攻击并分析结果表,寻找 HTTP 状态码和响应长度中的异常,以识别有趣的行为。

掌握 Burp Intruder 中的 Sniper 攻击,为你提供了一种强大的方法来自动化重复性测试任务,例如用户名枚举、密码猜测和常见漏洞的模糊测试。