利用 ZAP 进行 REST API 测试
Posted
技术标签:
【中文标题】利用 ZAP 进行 REST API 测试【英文标题】:Utilizing ZAP for RESTAPI testing 【发布时间】:2020-10-06 20:11:59 【问题描述】:我很好奇如何使用 ZAP 在 API 安全环境中测试 RESTAPI。只是可以使用 OpenAPI 插件还是有其他(更有效的)方法?
【问题讨论】:
【参考方案1】:有一个 ZAP 常见问题解答 :) https://www.zaproxy.org/faq/how-can-you-use-zap-to-scan-apis/ :
ZAP 了解 JSON 和 XML 等 API 格式,因此可用于扫描 API。
问题通常是如何有效地探索 API。
有多种选择:
如果您的 API 有 OpenAPI/Swagger 定义,那么您可以使用 OpenAPI add-on 导入它。 如果您有端点 URL 列表,则可以使用 Import files containing URLs 插件导入这些。 如果您对 API 进行了回归测试,那么您可以通过 ZAP 代理这些测试插件可从 ZAP Marketplace 获得。
一旦 ZAP 知道 URL 端点,它就可以像扫描基于 html 的网站一样扫描它们。
如果您没有这些东西,请发帖到ZAP User Group,说明您正在尝试做什么以及遇到的问题。
更多详情请看博文Scanning APIs with ZAP。
【讨论】:
我一直按照常见问题解答中的步骤操作,但 OpenApi 无法解析 URL。知道为什么会这样吗?【参考方案2】:使用 OwaspZap 的 Fuzzer 也是一个好主意。
模糊测试允许您通过提交格式错误的请求、格式错误的参数和猜测未发布的 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
【讨论】:
以上是关于利用 ZAP 进行 REST API 测试的主要内容,如果未能解决你的问题,请参考以下文章
在不使用 OpenAPI 或 Swagger 规范的情况下,使用 OWASP ZAP 对 API 进行身份验证
构建一个测试,该测试使用在 localhost 上运行的基于 Spring 的 REST API URL 进行测试