在 Burp Proxy 中实时修改 HTTP 响应

Beginner
立即练习

引言

Burp Suite 是一个强大的 Web 应用安全测试平台。其核心组件之一是 Burp Proxy,它充当你的浏览器和目标 Web 服务器之间的中间人。这使得你可以拦截、检查和修改双向传输的原始流量。

虽然拦截请求是一项常见任务,但拦截和修改响应对于安全测试同样重要。它允许你测试客户端应用程序如何处理来自服务器的意外或被篡改的数据。

在本实验中,你将学习如何配置 Burp Proxy 来拦截服务器响应,并在 HTML 内容显示在你的浏览器之前对其进行修改。我们将使用一个简单的本地 Web 服务器进行演示。

导航至 Proxy > Options > Intercept Server Responses

在此步骤中,你将配置 Burp Suite 以启用对来自 Web 服务器的响应的拦截。默认情况下,Burp Proxy 只拦截来自浏览器的传出请求。

首先,你需要启动 Burp Suite。你可以在应用程序菜单中找到它,或者通过搜索来启动。

Burp Suite 打开后:

  1. 点击窗口顶部的 Proxy 标签页。
  2. Proxy 标签页内,点击 Options 子标签页。
  3. 向下滚动选项,直到找到名为 Intercept Server Responses 的部分。

此部分包含控制 Burp Proxy 是否以及如何拦截传入 HTTP 响应的设置。你现在已经找到了下一步所需的配置区域。

勾选“Intercept responses based on the following rules”复选框

在此步骤中,你将启用响应拦截功能。

在你上一步找到的 Intercept Server Responses 部分,你会看到一个复选框。

  1. 点击 Intercept responses based on the following rules 标签旁边的复选框。

勾选此框后,Burp Proxy 将被配置为拦截符合其下方定义的规则的服务器响应。默认规则 Is a response to a request that was intercepted 会被自动添加,并且非常适合我们的需求。此规则指示 Burp 只拦截其对应请求也被代理拦截的响应。这可以防止 Burp 暂停处理每一个响应(例如背景图片或脚本的响应),而是只关注你正在主动检查的流量。

拦截请求并转发

在此步骤中,你将使用 Burp 内置的浏览器向我们的本地 Web 服务器发起请求并进行拦截。

  1. 导航至 Proxy > Intercept 子标签页。
  2. 确保按钮显示 Intercept is on。如果显示“Intercept is off”,请点击它以启用拦截。
  3. 点击 Open Browser 按钮。一个新的 Chromium 浏览器窗口将打开,该窗口已预先配置为使用 Burp Proxy。
  4. 在浏览器的地址栏中,输入 http://127.0.0.1:8000 并按 Enter 键。

浏览器将显示加载中的状态,似乎会无限期地加载。这是因为 Burp 已经拦截了 HTTP 请求。切换回 Burp Suite 窗口。在 Proxy > Intercept 标签页中,你将看到原始的 HTTP 请求:

GET / HTTP/1.1
Host: 127.0.0.1:8000
... (other headers)

这是你的浏览器向本地服务器发出的请求。要允许它继续发送到服务器,请点击 Forward 按钮。转发请求后,Burp 将开始等待拦截从服务器返回的响应。

修改拦截到的响应中的 HTML Body

在此步骤中,你将在 HTTP 响应发送到浏览器之前编辑其内容。

由于你在上一步启用了响应拦截并转发了请求,Proxy > Intercept 标签页现在包含了服务器的响应。它看起来会像这样:

HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/3.10.6
Date: ...
Content-type: text/html
Content-Length: ...

<h1>Welcome to the Original Page!</h1><p>This is the content you will modify.</p>

主文本区域是可编辑的。你可以在这里实时修改响应。

  1. 在响应体文本区域,找到 <h1>Welcome to the Original Page!</h1> 这一行。
  2. 将文本更改为 <h1>Welcome to the Modified Page!</h1>
  3. 你也可以根据需要更改段落文本,例如,改为 <p>This content has been changed by Burp Proxy.</p>

你现在已经修改了服务器的响应。它仍然被 Burp Proxy 持有,尚未到达浏览器。

转发修改后的响应并在浏览器中观察变化

在最后这一步,你将把修改后的响应发送到浏览器并查看结果。

修改后的响应仍在 Proxy > Intercept 标签页中等待。

  1. 最后一次点击 Forward 按钮。这将释放响应,并将你修改后的版本发送到浏览器。
  2. 切换回之前正在加载的 Burp Browser 窗口。

页面现在将完成加载,但显示的将是你输入的文本,而不是原始内容。你应该会看到:

Welcome to the Modified Page!
This content has been changed by Burp Proxy.

恭喜!你已成功拦截了一个 HTTP 响应,在传输过程中修改了其内容,并在浏览器中观察到了变化。这展示了 Web 应用程序安全测试的一项基本能力。你现在可以点击“Intercept is on”按钮来关闭拦截。

总结

在本实验中,你获得了使用 Burp Suite 关键功能的第一手经验。你已学会如何:

  • 配置 Burp Proxy 以拦截服务器响应,此功能默认是禁用的。
  • 遵循拦截请求、转发请求,然后捕获相应响应的工作流程。
  • 在 HTTP 响应体到达浏览器之前实时修改它。
  • 观察响应修改对渲染的网页产生的直接影响。

这项技术在 Web 安全中至关重要,用于测试 Web 应用程序的前端代码如何处理来自服务器的意外或恶意数据,从而可能发现跨站脚本攻击 (XSS) 或访问控制失效等漏洞。