引言
Burp Suite 是一套强大的 Web 应用安全测试工具集。它最有用的功能之一是 Burp Comparer,这是一个用于对任意两份数据(例如 HTTP 请求或响应)执行可视化“差异比对”的工具。这对于识别可能暴露漏洞的细微差异非常有帮助,例如会话令牌、隐藏表单字段或错误消息的变化。
在本实验中,你将学习使用 Burp Comparer 的基本工作流程。你将使用 Burp Proxy 捕获两个相似的 HTTP 请求,将它们发送到 Comparer 工具,然后分析高亮显示的差异。
在代理历史记录中查找两个相似的请求
在此步骤中,你将启动 Burp Suite 和一个 Web 浏览器来生成两个相似的登录请求。然后将使用这些请求进行比较。
首先,启动所需的应用程序。你可以在桌面上找到 Burp Suite 和 Chromium Web Browser。
- 双击桌面上的 Burp Suite 图标启动它。如果出现对话框,你可以使用默认设置,然后点击
Next,再点击Start Burp。 - 双击桌面上的 Chromium Web Browser 图标。
接下来,你需要捕获一些流量。我们将尝试使用不同的凭据两次登录一个虚构的网站。
- 在 Burp Suite 中,导航到
Proxy选项卡,然后在其中导航到Intercept子选项卡。如果按钮显示Intercept is off,请点击它,使其变为Intercept is on。 - 在 Chromium 浏览器中,导航到以下地址:
http://www.google.com。你将看到请求在 Burp Suite 中“卡住”。 - 返回 Burp Suite。你将看到捕获的请求。对于此实验,我们无需修改它。只需点击
Forward按钮让请求继续。重复此操作几次,直到 Google 主页在你的浏览器中加载。 - 现在,让我们生成目标请求。在浏览器中搜索“login page example”。点击任何提供简单登录表单的结果。在此示例中,假设你找到了一个页面,并为用户名输入了
user1,为密码输入了pass1。点击登录按钮。 - 返回 Burp Suite,然后点击
Forward让登录请求通过。 - 返回浏览器,输入不同的凭据,例如
user2和pass2,然后再次点击登录按钮。 - 返回 Burp Suite,然后再次点击
Forward。
现在你已经生成了流量,可以在代理历史记录中找到这些请求。
在 Burp Suite 中,转到 Proxy 选项卡,然后转到 HTTP history 子选项卡。在这里,你将看到所有通过代理的请求的日志。浏览列表以查找你使用的登录页面的两个 POST 请求。这两个请求将在后续步骤中进行比较。
右键单击第一个请求并选择“Send to Comparer”
在此步骤中,你将把两个登录请求中的第一个发送到 Comparer 工具。
请保持在 Burp Suite 的 Proxy -> HTTP history 选项卡中,你可以在其中看到捕获的请求列表。
- 找到你做的第一个登录请求(例如,包含凭据
user1和pass1的那个)。 - 在历史记录列表中右键单击该特定请求。这将打开一个包含许多选项的上下文菜单。
- 在此上下文菜单中,找到并选择
Send to Comparer选项。
此操作将复制选定的请求并将其加载到 Comparer 工具中。Burp Suite 窗口顶部的 Comparer 选项卡现在应该会高亮显示或改变颜色,表明它已收到新数据。你可以点击 Comparer 选项卡来确认已加载一项。
右键单击第二个请求并选择“Send to Comparer”
现在,你将把第二个登录请求发送到 Comparer 工具。这将提供比较所需的第二个项目。
- 导航回
Proxy->HTTP history选项卡。 - 找到你做的第二个登录请求(例如,包含凭据
user2和pass2的那个)。 - 在历史记录列表中右键单击第二个请求。
- 从出现的上下文菜单中,再次选择
Send to Comparer。
执行此操作后,Comparer 选项卡现在将包含两个请求。如果你切换到 Comparer 选项卡,你将看到列出了两个项目,已准备好进行比较。
在 Comparer 中选择两个项目并点击“Words”进行比较
将两个请求都加载到 Comparer 后,你现在可以执行实际的比较了。
- 导航到 Burp Suite 中的
Comparer选项卡。 - 在 Comparer 界面的顶部,你将看到已发送项目的列表。它应该显示两个项目。
- 选择两个项目。你可以先单击第一个项目,然后按住
Ctrl键并单击第二个项目来完成此操作。现在两者都应该被高亮显示。 - 在窗口底部,你将看到比较选项。两个主要选项是
Words和Bytes。Words比较非常适合基于文本的数据,如 HTTP 请求,因为它逐字分析差异,使输出非常易读。Bytes比较执行字节级别的差异分析,更适合二进制数据。 - 点击
Words按钮开始比较。
Burp Suite 现在将处理这两个请求,并准备一个并排的视觉比较。
分析请求之间的突出显示差异
在最后一步,你将分析比较结果,以了解两个请求之间发生了什么变化。
在上一 步单击 Words 后,Comparer 选项卡中的主面板将更新,并排显示两个请求。Burp Comparer 使用颜色编码系统来方便地识别差异:
- 黄色:突出显示已修改的数据。
- 粉色:突出显示已添加的数据。
- 蓝色:突出显示已删除的数据。
滚动浏览两个请求面板。侧面的滚动条也将带有颜色标记,以帮助你快速跳转到更改的位置。
你应该能够清楚地看到请求体中的差异。用户名和密码参数的值(user1 对 user2 和 pass1 对 pass2)将以黄色突出显示,表明它们已被修改。
根据 Web 应用程序的不同,你可能还会注意到其他差异。例如:
- 如果新的参数值长度不同,
Content-Length头可能不同。 - 如果服务器分配了新的会话 ID,
Cookie头可能会发生变化。
通过分析这些突出显示的差异,你可以快速了解 Web 应用程序如何响应不同的输入。这是发现各种安全漏洞的基本技术。
总结
在本实验中,你学习了使用 Burp Comparer 分析 HTTP 请求的基本工作流程。你成功生成了网络流量,从代理历史记录中隔离了两个相似的请求,并将它们发送到 Comparer 工具。通过执行基于单词的比较,你能够直观地识别两个请求之间的确切差异。
这项技能对于许多 Web 安全测试任务至关重要,例如分析身份验证机制、测试参数篡改以及通过观察应用程序如何响应不同输入来识别潜在的注入点。
