动态应用程序安全测试

为了增强应用程序的安全性,你可以将动态应用安全测试(DAST)集成到发布工作流中。DAST 是一种黑盒测试,它模拟对运行中应用程序的真实世界攻击。

有许多商业工具和 SaaS 解决方案(如 PortSwigger 的 Burp Suite 或 WhiteHat Sentinel),但分析这些工具超出了本书的范围。也有一些开源解决方案,其中一个例子是 OWASP 的 Zed Attack Proxy(ZAP)(https://www.zaproxy.org/)。它是一个独立的应用程序,支持 Windows、macOS 和 Linux(可以通过 https://www.zaproxy.org/download/ 下载),并可用于攻击 web 应用程序。这个应用程序允许你分析 web 应用程序,拦截和修改流量,并使用 ZAP Spider 进行攻击,针对网站或其中的某些部分(见图 15.7):

image 2024 12 27 17 09 46 811
Figure 1. 图 15.7 – OWASP ZAP 应用程序

OWASP ZAP 启动一个浏览器,并使用抬头显示器(HUD)在网站上方显示控制选项。你可以使用这些控制选项分析网站、使用蜘蛛进行攻击,或在不离开应用程序的情况下拦截请求(见图 15.8):

image 2024 12 27 17 10 00 652
Figure 2. 图 15.8 – HUD 在被攻击的网站上显示控制选项

即使你不是渗透测试人员,作为 web 开发人员,使用 OWASP ZAP 来攻击你的网站也应该很容易上手并学习。但为了实现“安全向左”(shift left)策略,你应该将扫描集成到工作流中。OWASP ZAP 在 GitHub Marketplace 上提供了三种 Action(见图 15.9):

image 2024 12 27 17 10 17 133
Figure 3. 图 15.9 – GitHub Marketplace 中的 OWASP ZAP Actions

基线扫描比全面扫描更快速,API 扫描可以用于扫描 OpenAPI、SOAP 或 GraphQL API。使用这些 Actions 非常简单:

- name: OWASP ZAP Full Scan
  uses: zaproxy/action-full-scan@v0.3.0
  with:
    target: ${{ env.TARGET_URL }}

该 Action 使用 GITHUB_TOKEN 将结果写入 GitHub 问题(Issue)。它还会将报告作为构建工件上传。报告可以是 HTML、JSON 或 Markdown 格式(见图 15.10):

image 2024 12 27 17 10 39 076
Figure 4. 图 15.10 – OWASP ZAP 扫描结果

当然,这些工具仅适用于 web 应用程序。对于其他场景,还存在其他 DAST 工具。但这个例子展示了如何轻松地将其集成到你的工作流中。大多数 DAST 工具都是命令行工具或容器,或者它们已经像 OWASP ZAP 一样具有集成功能。