来自CLI的OWASP ZAP密钥斗篷/OIDC/Oauth2



对于我的CI,我知道需要从CLI启动ZAP,这很好:

docker run --net mynetwork -v $(pwd):/zap/wrk/:rw 
-t owasp/zap2docker-stable zap-full-scan.py -I -j -m 10 -T 60 
-t http://myapiserver.com:8080/api/docs 
-r report-$(date +%Y%m%d-%H%M%S).html

现在,我的REST API服务器使用OAuth2/OIDC/Keycapture,我知道如何获得令牌,这没有问题。

但我不知道如何激活社区脚本AddBearerTokenHeader.js,以便在每个调用中包含一个令牌。文档对我来说并不清楚,基本上要求安装应用程序以使用鼠标查找密钥,但我做不到(无权在我的电脑上安装应用程序(。

在哪里可以找到激活此脚本的参数?

更新

虽然我能够从Docker启动Swing接口。。。

docker run -u zap -p 8080:8080 -p 8090:8090 -i owasp/zap2docker-stable zap-webswing.sh
# Browse for http://localhost:8080/zap/

不能使config.xml的差异在文档之后引起(是的,我知道如何使用docker、共享目录、RTFM等(

@SimonBennets的答案提供了一个很好的解决方案,而不是最好的(如果我想添加多个标头怎么办?如何更新令牌?(,但它很有效:

TOKEN=$(curl -ks -X POST 
${URL}realms/${REALM}/protocol/openid-connect/token 
-H "Accept: application/json" 
-H "Content-Type: application/x-www-form-urlencoded" 
-H "cache-control: no-cache" 
-d "grant_type=password" 
-d "username=${USER_NAME}" 
-d "password=${USER_PASS}" 
-d "client_id=admin-cli"|jq -r .access_token|tr -d "n"
)
docker run --net net_oia 
--name zap 
-v $(pwd):/zap/wrk/:rw 
-e ZAP_AUTH_HEADER="Authorization" 
-e ZAP_AUTH_HEADER_VALUE="Bearer $TOKEN" 
-t owasp/zap2docker-stable zap-full-scan.py -I -j -m 10 -T 60 
-t http://apidb:8080/api/ 
-r report-$(date +%Y%m%d-%H%M%S).html

我的日志显示了OWASP Zap HEADER是如何生成的(注意authorization头…为什么是小写?无论如何,这是可以的(:

apidb      | Headers({'host': 'apidb:8080', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:92.0) Gecko/20100101 Firefox/92.0', 'pragma': 'no-cache', 'cache-control': 'no-cache', 'authorization': 'Bearer eyJhbGciOiJSUzI1NiIsIn...'})

使用ZAP_AUTH_HEADER_VALUE环境变量是一个更容易的选项。这里有更详细的解释https://www.zaproxy.org/docs/authentication/handling-auth-yourself/

相关内容

  • 没有找到相关文章

最新更新