在 Burp Intruder 中执行 Sniper 攻击

MySQLBeginner
立即练习

引言

在本实验中,你将学习如何执行“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 Sets 和 Payload Options 部分。

  1. 在 Payload Sets 部分下,确保 Payload set 设置为 1,Payload 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”)。

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

总结

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

你学会了如何:

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

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