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