我很好奇如何在 API 安全的上下文中使用 ZAP 来测试 RESTAPI。它只是可以使用的 OpenAPI 插件还是有其他(更有效的)方法?
2 回答
有一个 ZAP 常见问题解答 :) https://www.zaproxy.org/faq/how-can-you-use-zap-to-scan-apis/:
ZAP 了解 JSON 和 XML 等 API 格式,因此可用于扫描 API。
问题通常是如何有效地探索 API。
有多种选择:
- 如果您的 API 具有 OpenAPI/Swagger 定义,那么您可以使用OpenAPI 插件将其导入。
- 如果您有端点 URL 列表,则可以使用包含 URL 的导入文件插件导入这些 URL。
- 如果您对 API 进行了回归测试,那么您可以通过 ZAP 代理这些测试
附加组件可从 ZAP Marketplace 获得。
一旦 ZAP 知道 URL 端点,它就可以像扫描基于 HTML 的网站一样扫描它们。
如果您没有任何这些东西,请发布到ZAP 用户组,说明您正在尝试做什么以及遇到的问题。
有关更多详细信息,请参阅博客文章使用 ZAP 扫描 API。
另外一个好主意是使用来自 OwaspZap 的 Fuzzer。
Fuzzing 允许您通过提交格式错误的请求、格式错误的参数和猜测未发布的 API 方法来触发 API 服务器的意外行为。
你可以在这里阅读什么是模糊测试:https ://owasp.org/www-community/Fuzzing
它将允许您模糊 URL 字符串或单个参数。
要启动模糊器,您需要:
- 右键单击请求 -> 攻击 -> Fuzz..
- 突出显示您要使用的参数,然后单击“添加”按钮
- 在新的有效负载窗口中单击添加,选择适当的选项并单击添加有效负载。
我建议在第 3 步选择“文件模糊器”选项并选择一个预定义的词表,或导出您自己的词表。你可以使用 Seclists 来查找一堆 fuzzing wordlists。这是为 API fuzzing 设计的一组词表https://github.com/danielmiessler/SecLists/tree/master/Discovery/Web-Content/api
此外,如果您知道方法,OwaspZap 允许您执行手动 API 测试。在这里您可以找到一些与 REST 安全性相关的链接:
https://cheatsheetseries.owasp.org/cheatsheets/REST_Security_Cheat_Sheet.html https://cheatsheetseries.owasp.org/cheatsheets/REST_Assessment_Cheat_Sheet.html