在 Burp Intruder 中使用 Battering Ram 攻击

Beginner
立即练习

介绍

在本实验中,你将探索 Burp Suite Intruder 的一种攻击类型:Battering Ram。Burp Intruder 是一个强大的工具,用于自动化针对 Web 应用程序的定制化攻击。Battering Ram 攻击类型专门用于将相同的 payload 插入到 HTTP 请求中的多个位置的场景。

一个常见的用例是测试登录表单的弱凭证,其中用户名和密码可能相同(例如,admin/admin)。在本实验中,你将学习如何捕获登录请求,配置 payload 标记,选择 Battering Ram 攻击类型,设置 payload 列表,最后启动攻击以分析结果。

通过本实验的结束,你将对如何在你的 Web 应用程序安全测试工作流程中使用 Battering Ram 攻击以及何时使用它有一个实际的理解。

将登录请求发送到 Intruder

在此步骤中,你将启动必要的工具并捕获一个样本登录请求,以便发送到 Burp Intruder 进行攻击配置。

首先,打开一个终端来启动 Burp Suite。你通常可以在应用程序菜单中找到它,或者从命令行启动。在本实验中,我们将假定它已准备好启动。

接下来,打开实验环境中提供的 Firefox 浏览器。

现在,让我们配置 Burp Suite 来拦截 Web 流量。

  1. 在 Burp Suite 中,转到 Proxy 选项卡,然后是 Intercept 子选项卡。确保拦截已开启(按钮应显示“Intercept is on”)。
  2. 在 Firefox 中,配置浏览器使用 Burp 的代理。转到 Settings -> Network Settings,并将 Manual proxy configuration 设置为使用 127.0.0.1 作为 HTTP Proxy,使用 8080 作为 Port。
  3. 在 Firefox 地址栏中,导航到我们测试应用程序的登录页面:http://127.0.0.1:5000/login
  4. 输入 test 作为用户名,输入 test 作为密码,然后点击“Login”按钮。

该请求将被捕获在 Burp Suite 的 Proxy -> Intercept 选项卡中。屏幕将显示原始的 HTTP 请求。

最后,将此捕获的请求发送到 Intruder。在请求窗口的任意位置右键单击,然后从上下文菜单中选择 Send to Intruder。你也可以使用键盘快捷键 Ctrl+I

你现在可以转到 Intruder 选项卡,在那里你将看到已加载的请求,并准备好进行配置。

在 Positions 中,为用户名和密码字段都添加 Payload 标记

在此步骤中,你将定义 Burp Intruder 应将 payload 放置在 HTTP 请求中的位置。对于 Battering Ram 攻击,我们将标记用户名和密码字段。

导航到 Intruder 选项卡,然后是 Positions 子选项卡。你将看到从 Proxy 选项卡发送的请求。Burp Suite 会自动在其认为有趣的请求部分添加 payload 标记(用 § 符号突出显示)。

对于此特定攻击,我们希望精确控制 payload 的位置。

  1. 首先,单击右侧的 Clear § 按钮。这将删除所有自动生成的 payload 标记。
  2. 现在,找到请求体中包含用户名和密码的行,它应该看起来像 username=test&password=test
  3. 用鼠标高亮 username 参数的 test 值。
  4. 单击 Add § 按钮。该行现在应该看起来像 username=§test§&password=test
  5. 接下来,高亮 password 参数的 test 值。
  6. 再次单击 Add § 按钮。

完成这些步骤后,你的请求体应该在用户名和密码值周围都有 payload 标记,如下所示:

username=§test§&password=§test§

此配置告诉 Intruder 将 payload 插入到这两个特定位置。

将攻击类型设置为“Battering Ram”

在此步骤中,你将为我们的场景选择合适的攻击类型。Burp Intruder 提供四种不同的攻击类型,每种都有其独特用途。

  • Sniper: 使用单个 payload 集,一次针对一个位置。
  • Battering ram: 使用单个 payload 集,同时将相同的 payload 放置在所有标记的位置。
  • Pitchfork: 使用多个 payload 集,将每个集中的一个 payload 放置在相应的位置。
  • Cluster bomb: 使用多个 payload 集,测试所有可能的 payload 组合。

为了实现测试用户名和密码是否相同的目标,Battering ram 攻击是完美的选择。它将采用单个潜在凭据列表,并在同一请求中为用户名和密码尝试每个凭据。

Intruder -> Positions 选项卡中,找到屏幕顶部的 Attack type 下拉菜单。默认情况下,它设置为“Sniper”。单击下拉菜单并选择 Battering ram

选择后,Burp Intruder 现在已配置为使用 Battering Ram 攻击逻辑。

配置简单的 Payload 列表(例如,test, guest)

在此步骤中,你将提供 Intruder 用于攻击的 payload 列表。由于我们使用的是 Battering Ram 攻击类型,因此只需要配置一个 payload 集。

  1. 导航到 Intruder -> Payloads 选项卡。
  2. “Payload Sets”部分应显示“Payload set: 1”和“Payload type: Simple list”。这是默认设置,并且符合我们的需求。
  3. 在下方的“Payload Options”部分,有一个用于添加 payload 的文本框。你可以逐个输入 payload 并单击 Add 按钮来添加,也可以直接将列表粘贴到框中。

对于本次实验,让我们添加一些常见的默认或弱凭据。清除列表中任何现有的 payload,然后添加以下内容:

  • test
  • guest
  • admin
  • password
  • user

你的“Payload Options”列表现在应该如下所示:

test
guest
admin
password
user

通过此配置,Intruder 将遍历此列表。对于列表中的每个项目,它会将该值放入我们在步骤 2 中标记的 usernamepassword 字段中。

运行攻击并分析同一 Payload 如何在两个位置中使用

在此最后一步中,你将启动攻击并分析结果,以了解 Battering Ram 攻击的工作原理。

  1. 确保你在 Positions 和 Payloads 选项卡中的所有配置都正确。
  2. 在 Intruder 窗口的右上角,单击 Start attack 按钮。

一个新的“Intruder attack”窗口将打开,攻击将立即开始。你将看到一个结果表,该表会在每个请求发送时填充数据。

让我们分析一下结果:

  • Results Table: 注意“Payload”、“Status”和“Length”列。“Payload”列显示了该特定请求使用的 payload 列表中的值。
  • Request/Response Tabs: 单击结果表中的任意行(例如,payload 为 guest 的行)。在窗口底部,你可以检查该尝试的 RequestResponse
    • Request 选项卡中,你将看到 payload guest 被插入到 usernamepassword 参数中:username=guest&password=guest。这证实了 Battering Ram 的行为。
    • Response 选项卡中,你可以看到服务器的回复。

在结果中寻找异常。成功的登录可能具有不同的状态码或响应长度。在我们的例子中,test payload 应该会导致登录成功。你可以通过在响应体中查找“Login successful!”消息,或按“Length”对结果进行排序来查看哪个响应不同,从而识别它。

此分析演示了 Battering Ram 攻击如何有效地测试单个输入在多个参数中使用的情况,这是凭据测试中的常见场景。

总结

在本次实验中,你已成功使用 Burp Suite Intruder 配置并执行了 Battering Ram 攻击。

你学会了如何:

  • 使用 Burp Proxy 捕获 HTTP 请求并将其发送到 Intruder。
  • 清除默认的 payload 标记,并精确定义自定义的 payload 位置。
  • 选择 Battering Ram 攻击类型,并理解其特定用例。
  • 为攻击配置一个简单的 payload 列表。
  • 发起攻击并分析结果,以确认在每个请求的所有指定位置都使用了相同的 payload。

Battering Ram 是渗透测试人员工具箱中的一个宝贵工具,尤其适用于测试登录表单和其他场景,在这些场景中,单个数据可能被用作多个参数。掌握此技术将提高你 Web 应用程序安全评估的效率和有效性。