引言
在本实验中,你将学习如何使用 Burp Intruder 的一个强大功能:‘Grep - Extract’。此功能允许你定义规则,从 Intruder 攻击期间收到的响应中提取特定文本片段。它对于收集在每次请求中可能发生变化的有价值信息(如 CSRF tokens、session IDs 或其他动态生成的数据)非常有用。
在本实验结束时,你将能够配置 Burp Intruder,使其自动查找并显示响应中的自定义数据,从而提高你的安全测试工作流程效率。我们将模拟一个场景,需要从网页响应中提取一个隐藏的 token。
在 Intruder > Options 中,滚动到‘Grep - Extract’部分
在此步骤中,我们将首先启动 Burp Suite,并将一个示例请求发送到 Intruder 工具。这将为配置我们的提取规则奠定基础。
首先,你需要启动 Burp Suite。通常可以在桌面环境的应用程序菜单中找到它。
- 从桌面打开 Terminal。
- 运行命令
burpsuite来启动 Burp Suite。选择一个临时项目,然后点击 "Next",再点击 "Start Burp"。 - 转到 Proxy > Intercept 选项卡,并确保 "Intercept is on"。
- 通过转到 Proxy > Intercept 并点击 "Open Browser" 来打开内置的 Chromium 浏览器。
- 在浏览器中,导航到任何一个简单的网站,例如
http://portswigger.net。 - 请求将在 Burp Suite 中被拦截。在请求文本区域的任意位置右键单击,然后选择 Send to Intruder。
- 现在,导航到 Intruder 选项卡。你将看到刚刚发送的请求。
- 在 Intruder 选项卡中,点击 Options 子选项卡。
- 向下滚动页面,直到找到标题为 Grep - Extract 的部分。这里我们将配置我们的数据提取规则。
你现在已成功找到‘Grep - Extract’部分,并准备好添加规则。
添加新提取规则
在此步骤中,你将在‘Grep - Extract’部分添加一个新空规则。此规则稍后将配置为定义我们希望从服务器响应中提取的具体数据。
‘Grep - Extract’功能通过创建规则列表来工作。每条规则定义一个要在响应中查找的模式。当响应匹配某个规则时,响应的指定部分将被提取并显示在 Intruder 结果表的新列中。
要添加新规则,请遵循以下说明:
- 在你上一步找到的 Grep - Extract 部分,点击 Add 按钮。
点击 Add 后,规则表中将出现一个新条目。此新条目将具有默认设置,我们将在下一步进行配置。用于定义提取的对话框也将弹出,准备好接收你的输入。
定义开始和结束分隔符以提取数据(例如,隐藏的 token)
在此步骤中,你将配置刚刚添加的规则。我们将通过定义目标数据紧随其后的文本来告诉 Burp 要提取什么。这是通过使用开始和结束分隔符来完成的。
在本实验中,假设我们要从包含以下 HTML 片段的响应中提取一个 CSRF token:
<input type="hidden" name="csrf_token" value="a1b2c3d4e5f6g7h8i9j0" />
我们的目标是提取值 a1b2c3d4e5f6g7h8i9j0。
- 在上一步点击 "Add" 后,会出现一个 "Define extract grep" 对话框。如果它没有打开,请点击你添加的新规则以打开它。
- 工具会自动获取你发送到 Intruder 的原始请求的响应。你可以在底部的响应视图中看到它。
- 要定义提取,我们将指定一个开始和结束分隔符。最可靠的方法是使用 "Define start and end" 选项。
- 在响应中找到一个你想要提取的唯一文本片段。在我们的示例中,假设响应包含上述 HTML 片段。
- 在响应视图中,高亮显示你想要提取的值(例如,
a1b2c3d4e5f6g7h8i9j0)。 - "Start" 和 "End" 字段将自动填充。
- Start after expression 字段应包含目标数据紧随其前的文本。在我们的示例中,这将是
name="csrf_token" value="。 - End at delimiter 字段应包含目标数据紧随其后的文本。在我们的示例中,这将是
"。
- Start after expression 字段应包含目标数据紧随其前的文本。在我们的示例中,这将是
- 点击 OK 保存规则。
你现在已经配置了一个规则,该规则将搜索每个响应中 name="csrf_token" value=" 和 " 之间的文本,并将其提取出来。
运行 Intruder 攻击
在此步骤中,你将配置一个基本 payload 并启动 Intruder 攻击。当攻击运行时,Burp 将对收到的每个响应应用 Grep-Extract 规则。
首先,我们需要设置一个 payload 位置。
- 导航到 Intruder > Positions 子选项卡。
- 此处显示请求模板。默认情况下,Burp 可能已自动在参数值周围添加了 payload 标记(
§...§)。对于本练习,payload 位置无关紧要,因为我们的重点是响应。你可以保留默认标记,或者清除它们并在任何位置添加一个。例如,你可以将其添加到 cookie 值或参数中。 - 确保攻击类型设置为 Sniper。
接下来,我们配置一个简单的 payload。
- 导航到 Intruder > Payloads 子选项卡。
- 在 Payload Sets 下,将 Payload set 保留为
1。 - 在 Payload Options 下,从下拉列表中选择 Numbers。
- 将其配置为从
1运行到5,步长为1。这将发送 5 个请求。
最后,启动攻击。
- 点击 Intruder 选项卡右上角的 Start attack 按钮。
- 将打开一个新的 "Intruder attack" 窗口,实时显示攻击结果。
攻击现已运行,Burp 正在根据你创建的规则忙于提取数据。
在结果表的列中查看提取的数据
在最后一步中,你将观察 Grep-Extract 配置的结果。你告诉 Burp 要查找的数据现在已整齐地组织在攻击结果窗口中。
- 查看在上一步中打开的 Intruder attack 窗口。
- 你将看到一个包含 "Request", "Position", "Payload", "Status", "Length" 等列的表格。
- 向右滚动表格。你应该会看到一个新列。默认情况下,它将被命名为 Extract 1。如果你添加了更多规则,它们将被命名为 Extract 2,依此类推。
- 这一新列包含使用你定义的规则从每个响应中提取的数据。
如果你目标网站实际上不包含我们用作示例的 csrf_token 字符串,此列可能会为空。但是,该列的存在确认了你的规则是活动的。如果你针对的是登录页面上真实、动态的 token,此列现在将填充每个响应中的唯一 token,供你分析或在后续攻击中使用。
你可以右键单击表头来添加或删除列,或者单击列标题按该数据对结果进行排序。
总结
在本实验中,你已成功学会了如何在 Burp Intruder 中使用“Grep - Extract”功能。你完成了整个过程:将请求发送到 Intruder,添加并配置带有特定分隔符的提取规则,运行攻击,最后在结果窗口中查看抓取的数据。
这项技能对于自动化从 Web 应用程序收集动态数据的过程至关重要,这是渗透测试和安全分析中的常见任务。现在,你可以在安全评估期间将这些知识应用于提取 CSRF token、会话标识符、API 密钥或 HTTP 响应中的任何其他特定信息。
