在 Intruder 响应中使用 Grep-Extract 抓取数据

Beginner
立即练习

引言

在本实验中,你将学习如何使用 Burp Intruder 的一个强大功能:‘Grep - Extract’。此功能允许你定义规则,从 Intruder 攻击期间收到的响应中提取特定文本片段。它对于收集在每次请求中可能发生变化的有价值信息(如 CSRF tokens、session IDs 或其他动态生成的数据)非常有用。

在本实验结束时,你将能够配置 Burp Intruder,使其自动查找并显示响应中的自定义数据,从而提高你的安全测试工作流程效率。我们将模拟一个场景,需要从网页响应中提取一个隐藏的 token。

在 Intruder > Options 中,滚动到‘Grep - Extract’部分

在此步骤中,我们将首先启动 Burp Suite,并将一个示例请求发送到 Intruder 工具。这将为配置我们的提取规则奠定基础。

首先,你需要启动 Burp Suite。通常可以在桌面环境的应用程序菜单中找到它。

  1. 从桌面打开 Terminal。
  2. 运行命令 burpsuite 来启动 Burp Suite。选择一个临时项目,然后点击 "Next",再点击 "Start Burp"。
  3. 转到 Proxy > Intercept 选项卡,并确保 "Intercept is on"。
  4. 通过转到 Proxy > Intercept 并点击 "Open Browser" 来打开内置的 Chromium 浏览器。
  5. 在浏览器中,导航到任何一个简单的网站,例如 http://portswigger.net
  6. 请求将在 Burp Suite 中被拦截。在请求文本区域的任意位置右键单击,然后选择 Send to Intruder
  7. 现在,导航到 Intruder 选项卡。你将看到刚刚发送的请求。
  8. Intruder 选项卡中,点击 Options 子选项卡。
  9. 向下滚动页面,直到找到标题为 Grep - Extract 的部分。这里我们将配置我们的数据提取规则。

你现在已成功找到‘Grep - Extract’部分,并准备好添加规则。

添加新提取规则

在此步骤中,你将在‘Grep - Extract’部分添加一个新空规则。此规则稍后将配置为定义我们希望从服务器响应中提取的具体数据。

‘Grep - Extract’功能通过创建规则列表来工作。每条规则定义一个要在响应中查找的模式。当响应匹配某个规则时,响应的指定部分将被提取并显示在 Intruder 结果表的新列中。

要添加新规则,请遵循以下说明:

  1. 在你上一步找到的 Grep - Extract 部分,点击 Add 按钮。

点击 Add 后,规则表中将出现一个新条目。此新条目将具有默认设置,我们将在下一步进行配置。用于定义提取的对话框也将弹出,准备好接收你的输入。

定义开始和结束分隔符以提取数据(例如,隐藏的 token)

在此步骤中,你将配置刚刚添加的规则。我们将通过定义目标数据紧随其后的文本来告诉 Burp 要提取什么。这是通过使用开始和结束分隔符来完成的。

在本实验中,假设我们要从包含以下 HTML 片段的响应中提取一个 CSRF token:

<input type="hidden" name="csrf_token" value="a1b2c3d4e5f6g7h8i9j0" />

我们的目标是提取值 a1b2c3d4e5f6g7h8i9j0

  1. 在上一步点击 "Add" 后,会出现一个 "Define extract grep" 对话框。如果它没有打开,请点击你添加的新规则以打开它。
  2. 工具会自动获取你发送到 Intruder 的原始请求的响应。你可以在底部的响应视图中看到它。
  3. 要定义提取,我们将指定一个开始和结束分隔符。最可靠的方法是使用 "Define start and end" 选项。
  4. 在响应中找到一个你想要提取的唯一文本片段。在我们的示例中,假设响应包含上述 HTML 片段。
  5. 在响应视图中,高亮显示你想要提取的值(例如,a1b2c3d4e5f6g7h8i9j0)。
  6. "Start" 和 "End" 字段将自动填充。
    • Start after expression 字段应包含目标数据紧随其前的文本。在我们的示例中,这将是 name="csrf_token" value="
    • End at delimiter 字段应包含目标数据紧随其后的文本。在我们的示例中,这将是 "
  7. 点击 OK 保存规则。

你现在已经配置了一个规则,该规则将搜索每个响应中 name="csrf_token" value="" 之间的文本,并将其提取出来。

运行 Intruder 攻击

在此步骤中,你将配置一个基本 payload 并启动 Intruder 攻击。当攻击运行时,Burp 将对收到的每个响应应用 Grep-Extract 规则。

首先,我们需要设置一个 payload 位置。

  1. 导航到 Intruder > Positions 子选项卡。
  2. 此处显示请求模板。默认情况下,Burp 可能已自动在参数值周围添加了 payload 标记(§...§)。对于本练习,payload 位置无关紧要,因为我们的重点是响应。你可以保留默认标记,或者清除它们并在任何位置添加一个。例如,你可以将其添加到 cookie 值或参数中。
  3. 确保攻击类型设置为 Sniper

接下来,我们配置一个简单的 payload。

  1. 导航到 Intruder > Payloads 子选项卡。
  2. Payload Sets 下,将 Payload set 保留为 1
  3. Payload Options 下,从下拉列表中选择 Numbers
  4. 将其配置为从 1 运行到 5,步长为 1。这将发送 5 个请求。

最后,启动攻击。

  1. 点击 Intruder 选项卡右上角的 Start attack 按钮。
  2. 将打开一个新的 "Intruder attack" 窗口,实时显示攻击结果。

攻击现已运行,Burp 正在根据你创建的规则忙于提取数据。

在结果表的列中查看提取的数据

在最后一步中,你将观察 Grep-Extract 配置的结果。你告诉 Burp 要查找的数据现在已整齐地组织在攻击结果窗口中。

  1. 查看在上一步中打开的 Intruder attack 窗口。
  2. 你将看到一个包含 "Request", "Position", "Payload", "Status", "Length" 等列的表格。
  3. 向右滚动表格。你应该会看到一个新列。默认情况下,它将被命名为 Extract 1。如果你添加了更多规则,它们将被命名为 Extract 2,依此类推。
  4. 这一新列包含使用你定义的规则从每个响应中提取的数据。

如果你目标网站实际上不包含我们用作示例的 csrf_token 字符串,此列可能会为空。但是,该列的存在确认了你的规则是活动的。如果你针对的是登录页面上真实、动态的 token,此列现在将填充每个响应中的唯一 token,供你分析或在后续攻击中使用。

你可以右键单击表头来添加或删除列,或者单击列标题按该数据对结果进行排序。

总结

在本实验中,你已成功学会了如何在 Burp Intruder 中使用“Grep - Extract”功能。你完成了整个过程:将请求发送到 Intruder,添加并配置带有特定分隔符的提取规则,运行攻击,最后在结果窗口中查看抓取的数据。

这项技能对于自动化从 Web 应用程序收集动态数据的过程至关重要,这是渗透测试和安全分析中的常见任务。现在,你可以在安全评估期间将这些知识应用于提取 CSRF token、会话标识符、API 密钥或 HTTP 响应中的任何其他特定信息。