在 Burp Suite 中生成 CSRF PoC

Beginner
立即练习

引言

在本实验中,你将学习一项 Web 应用安全测试中的基础技术:使用 Burp Suite 生成跨站请求伪造 (CSRF) 概念验证 (PoC)。CSRF 是一种攻击类型,它会诱骗受害者提交一个恶意请求。Burp Suite 提供了一个强大的功能来自动创建 PoC,可用于展示漏洞的影响。

你将使用 Burp Suite 的代理来拦截一个会改变应用状态的请求(例如更新电子邮件地址),然后使用其“Engagement tools”来生成一个重现此请求的 HTML 表单。这个实践练习将加深你对 CSRF 攻击是如何被构造和测试的理解。

查找状态变更请求(例如,更新电子邮件)在代理历史记录中

在此步骤中,你将启动 Burp Suite,使用其内置浏览器在目标网站上执行操作,然后找到代理历史记录中的相应请求。“状态变更请求”是指任何修改服务器上数据的请求,例如更改密码、提交评论或更新个人资料信息。

首先,让我们启动 Burp Suite。

  1. 点击屏幕左上角的 Applications 菜单。
  2. 转到 Web 并选择 Burp Suite Community Edition
  3. 将出现一个对话框。保留默认设置(Temporary project),然后点击 Next
  4. 在下一个屏幕上,选择 Use Burp defaults 并点击 Start Burp

Burp Suite 运行后,打开其内置浏览器。

  1. 转到 Proxy 选项卡,然后是 Intercept 子选项卡。
  2. 点击 Open Browser 按钮。一个新的 Chromium 浏览器窗口将打开,它已预先配置为通过 Burp Suite 代理流量。

现在,让我们执行一个要捕获的操作。在本实验中,我们将使用 PortSwigger 的一个测试网站。

  1. 在 Burp 浏览器中,导航到以下 URL:
    https://portswigger.net/web-security/csrf/lab-no-defenses
  2. 点击 Access the lab。你将被重定向到一个博客网站。
  3. 使用凭据 wiener:peter 登录应用程序。你可以在页面上的实验描述中找到这些凭据。
  4. 登录后,你将看到一个“Update email”表单。输入一个新的电子邮件地址,例如 test@example.com,然后点击 Update email

最后,让我们在 Burp Suite 中找到该请求。

  1. 返回 Burp Suite 窗口。
  2. 导航到 Proxy 选项卡,然后是 HTTP history 子选项卡。
  3. 浏览请求列表。你应该会看到一个 POST /my-account/change-email 请求。这是我们要定位的状态变更请求。点击它以在下方面板中查看其详细信息。
POST /my-account/change-email HTTP/2
Host: your-lab-id.web-security-academy.net
...

email=test%40example.com

你现在已成功拦截并识别了一个状态变更请求。

右键单击请求

在此步骤中,你将使用 Burp Suite 的上下文菜单来访问其高级功能。上下文菜单是 Burp Suite 工作流程的核心部分,它提供了对可应用于所选请求的各种工具的快速访问。

Proxy > HTTP history 选项卡中,仍然选中 POST /my-account/change-email 请求,执行以下操作:

  1. 将鼠标光标移到选中的请求行上。
  2. 右键单击该请求。

这将打开一个包含许多选项的大型上下文菜单。此菜单是上下文敏感的,意味着可用的选项可能会根据你点击的位置而变化。通过右键单击请求,你可以获得一系列可以对该特定请求执行的操作,例如将其发送到其他 Burp 工具,如 Repeater、Intruder,或者在本例中,发送到 CSRF PoC 生成器。

花点时间查看可用选项,熟悉一下这些可能性。

转到 Engagement tools > Generate CSRF PoC

在此步骤中,你将通过上下文菜单导航以查找并启动 CSRF PoC 生成器。此工具归类于“Engagement tools”(参与工具)下,这些功能旨在帮助演示和报告漏洞。

在上一步右键单击请求后,上下文菜单现在可见。请按照以下步骤生成 PoC:

  1. 在上下文菜单中,找到 Engagement tools 选项并将其鼠标悬停在其上。这将显示一个子菜单。
  2. 在出现的子菜单中,点击 Generate CSRF PoC

一个标题为“Generate CSRF PoC”的新窗口将打开。Burp Suite 已自动分析你选择的 POST 请求,并生成了一个简单的 HTML 页面,该页面在提交时将重放相同的请求。这是 CSRF 攻击的核心:诱使用户的浏览器向他们已登录的网站提交请求。

查看生成的 HTML 表单

在此步骤中,你将检查 Burp Suite 生成的 HTML 代码。理解这段代码对于理解 CSRF 攻击的工作原理至关重要。

在“Generate CSRF PoC”窗口中,你将看到一段 HTML 代码。它应该与以下内容类似:

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
    <script>
      history.pushState("", "", "/");
    </script>
    <form
      action="https://your-lab-id.web-security-academy.net/my-account/change-email"
      method="POST"
    >
      <input type="hidden" name="email" value="test&#64;example&#46;com" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

让我们分解一下这个 HTML 的关键组成部分:

  • <form action="..." method="POST">: 这定义了一个 HTML 表单。action 属性指定了表单数据将被发送到的 URL——在本例中,是用于更改电子邮件地址的相同端点。method="POST" 与原始请求的方法相匹配。
  • <input type="hidden" name="email" value="...">: 这是一个隐藏的表单字段。它包含服务器执行操作所需的参数。这里是 email 参数,值为 test@example.com。由于它是隐藏的,访问此页面的受害者将看不到它。
  • <input type="submit" value="Submit request" />: 这创建了一个按钮,受害者需要点击该按钮才能触发攻击。在更高级的攻击中,可以使用 JavaScript 自动触发此提交。

这个简单的 HTML 页面是 CSRF 漏洞的一个功能性概念验证(Proof of Concept)。

使用“Test in browser”功能验证 PoC

在此步骤中,你将使用生成的 PoC 来确认 CSRF 漏洞。Burp Suite 通过内置的测试功能使此过程变得简单。

在“Generate CSRF PoC”窗口中,你将找到一个标有 Test in browser 的按钮。此功能允许你在已登录目标应用程序的同一浏览器会话中直接测试 PoC。

  1. 点击 Test in browser 按钮。
  2. Burp Suite 会提供一个唯一的 URL。点击 Copy 按钮将此 URL 复制到剪贴板。
  3. 返回 Burp 的内置浏览器(Chromium 窗口)。
  4. 将复制的 URL 粘贴到地址栏并按 Enter。

一个新页面将加载,仅显示一个“Submit request”按钮。这就是你正在运行的 PoC。

  1. 点击 Submit request 按钮。

浏览器会将 POST 请求发送到 Web 应用程序。由于你已登录(你的浏览器拥有会话 cookie),应用程序将像你合法发起请求一样处理该请求。

要确认攻击成功:

  1. 导航回带有博客应用程序的标签页。
  2. 刷新页面或点击“My account”链接。
  3. 你应该会看到电子邮件已更新为 test@example.com(或你的 PoC 中的任何值)。实验(Lab)也应该显示“Congratulations, you solved the lab!”消息。

这证实了 CSRF PoC 有效,并且应用程序存在漏洞。

总结

在本实验(Lab)中,你已成功学会如何使用 Burp Suite 生成和测试跨站请求伪造(CSRF)概念验证(PoC)。

你实践了完成此任务的完整工作流程:

  1. 使用 Burp 的代理(proxy)拦截状态更改请求。
  2. 使用上下文菜单访问 Engagement tools
  3. 一键生成 CSRF PoC。
  4. 分析生成的 HTML 以理解攻击机制。
  5. 在浏览器中测试 PoC 以确认漏洞。

这项技能对于任何 Web 应用程序安全专业人员来说都至关重要,因为它提供了一种清晰有效的方式,可以向开发人员和利益相关者展示 CSRF 缺陷的实际影响。