我正在尝试使用 Zap Docker 映像进行 API 扫描,尽管通过了身份验证配置,但经过身份验证的端点仍返回 404/403 错误。未经身份验证的端点可以正确扫描。该问题涉及确保扫描过程中的身份验证。 Docker 镜像中适当地提供了 OpenAPI 定义和配置文件。但是,尚不清楚为什么特定端点的身份验证失败。
我目前正在尝试使用 Zap(开源工具)Docker 映像进行 API 扫描,方法是通过命令提示符传递 API 的 Swagger 文件并生成报告。这是我使用的命令:
docker run -v {pwd}:/zap/wrk/:rw -t owasp/zap2docker-weekly zap-api-scan.py -t openapi.json -f openapi -z "-config /zap/wrk/options .prop" -r report_html.html
在‘openapi.json’文件中,我传递了GitHub的OpenAPI定义,‘options.prop’文件包含:
-config replacer.full_list(0).description=AuthHeader
-config replacer.full_list(0).enabled=true
-config replacer.full_list(0).matchtype=REQ_HEADER
-config replacer.full_list(0).matchstr=Authorization
-config replacer.full_list(0).regex=false
-config replacer.full_list(0).replacement=Bearer MyToken
我已将 OpenAPI 定义和“options.prop”文件放在一个目录中(称为“{pwd}”),然后将其安装在 Docker 映像中。
扫描确实会生成报告作为输出,但我注意到它正在扫描不需要身份验证的请求。对于需要身份验证的端点,扫描会返回状态代码 404 和 403。
我还尝试使用以下命令发送需要身份验证的单个端点,其中 users 是您在 github 中的用户名,repo_name 是私有存储库:
docker run --rm -v "%cd%":/zap/wrk/:rw -t ghcr.io/zaproxy/zaproxy:每周 zap-api-scan.py -t https://api.github .com/repos/users/repo_name/languages -f openapi -z“-configfile /zap/wrk/options.prop”-r report01.html
使用zaps docker镜像执行扫描时,生成的报告包含403错误,如下所示
我还在邮递员上测试了端点和身份验证令牌,以确保它们工作正常,并且它们按预期工作。
我正在努力找出问题所在以及如何纠正它以执行经过身份验证的 API 扫描。
不确定 zap 是否没有从 options.prop 文件中获取身份验证令牌,或者 github 对端点有一些限制。如果 github 确实有一些限制,是否有任何其他 API 可以用来通过 Zap 的 docker 镜像进行测试?
任何帮助或见解将不胜感激!
您检查过 ZAP 身份验证决策树吗? https://www.zaproxy.org/docs/authentication/
如果没有从那里开始。它应该可以让您找到最适合您的选择。如果您仍然遇到问题,那么 ZAP 用户组是寻求更详细帮助的最佳场所。