docker - 未通过 ZAP API 扫描 docker 映像进行身份验证
问题描述
最初我尝试通过 ZAP UI 验证 API。我有一个文件夹结构
上下文,wrk->script->authentication->bearer-token.js,wrk->script->httpsender->header-set-bearer-token.js,wrk->script->zap_hooks.py。
在进行身份验证时,我选择了 ScriptBasedAuthentication 并加载了 Bearer-token.js 中提供的脚本、提供的令牌提供者 URL、API 密钥和 grantType。导入 Swagger.json 并运行 Active Scan。
ZAP UI 一切正常。
在尝试使用 ZAP API Scan docker 映像时,我收到警报
服务器返回响应码 401。
这可能表明应用程序无法正确处理意外输入。
由“HTTP 响应代码错误警报”脚本引发
正在扫描所有 api,但未对其进行身份验证。我正在运行的命令是
docker run -v $(pwd):/zap/wrk/:rw -t owasp/zap2docker-weekly zap-api-scan.py -t test.json -f openapi -r api-scan-report.html -z “ -config replacer.full_list(0).description=auth1 -config replacer.full_list(0).enabled=true -config replacer.full_list(0).matchtype=REQ_HEADER -config replacer.full_list(0).matchstr=授权 -config replacer.full_list(0).regex=false -config 'replacer.full_list(0).replacement=Bearer XXXXXXXXXXXXXXXXXXXXXX'”</h2>
“Bearer TokenXXXXX”之间有空格,所以我参考了这个https://github.com/zaproxy/zaproxy/issues/4332#issuecomment-367326344
但这对我不起作用。Bearer 令牌再次仅在 5 分钟内有效,然后过期。
如果我提供--hook=zap_hooks.py,它会说在/zap/zap_hooks.py 找不到自定义钩子文件 我从一个星期开始尝试这个,但没有运气。请帮助我如何验证我的 API 可以摆脱 401(未经授权)
请帮我解决一下这个。提前致谢。
解决方案
尝试使用zap.sh
或zap.bat
脚本在本地启动 ZAP 并指定相同的-config
参数 - 桌面将从应用这些参数开始,因此您可以手动检查替换规则是否已设置并按预期工作。
或者使用身份验证 env var 选项:https ://www.zaproxy.org/docs/desktop/start/features/authentication/#envvars - 如果您只想注入标头,那么它可能对您来说更容易。
推荐阅读
- xml - 使用单个 XSLT 生成不同的输出文件
- sql - 查找表中每个实体的最大 N 值的最有效 SQL 查询是什么
- laravel - 在 Laravel 中执行 CRUD 的单个函数
- php - php file_put_content 到 aws S3
- dart - Angular Dart:如果用户未登录,则将用户重定向到登录页面
- angular - 如何在角度 6 中单击从一个组件到另一个组件的按钮时获取复选框的选中值
- arduino - 功能音和IRremote
- chart.js - ChartJS X 轴上的日期不显示任何图表
- c++ - 使用贪心算法没有得到所需的背包问题输出
- reactjs - 如何在反应中将值从父功能组件传递给子类组件