问题描述
我正在使用此命令对 https://www.example.com 进行全面扫描。
docker run -v $(pwd):/zap/wrk/:rw -t owasp/zap2docker-stable zap-full-scan.py \
-t https://www.example.com -g gen.conf -r testreport.html
添加这样的 http 参数 www.example.com/toto?booking=true&satckoverflow=1。
我知道 ZAP GUI 的 http sender 部分中有一个 add-extra-headers.js 脚本。但是我在做docker run zap-full-scan的时候不知道怎么用。
我无法进行 docker zap api 扫描。
更新: 使用了提出的第二个解决方案,这是我的脚本
var URL_TYPE = org.parosproxy.paros.network.HtmlParameter.Type.url;
var HtmlParameter = Java.type('org.parosproxy.paros.network.HtmlParameter');
var paramName = 'param1';
var paramValue = 'value1';
function sendingRequest(msg,initiator,helper) {
if (!msg.getRequestHeader().getURI().toString().contains(paramName + '=' + paramValue)) {
//You might want to add a check here for the proper domain or path as well..
var urlParams = msg.getUrlParams();
var newParam = new HtmlParameter(URL_TYPE,paramName,paramValue);
urlParams.add(newParam); // you Could print this if you need to see what's up
msg.setGetParams(urlParams);
}
return msg;
}
function responseReceived(msg,helper) {
//nothing to do here
}
解决方法
dp 您需要添加 HTTP 标头或其他一些参数吗?可以通过环境变量轻松添加标头:https://www.zaproxy.org/docs/desktop/start/features/authentication/#envvars
如果您需要添加另一种参数,则可以通过脚本完成,但您需要告诉 ZAP 从何处加载它们。
首先在 ZAP GUI 中实现并测试您的 scipt - 更容易看到那里发生了什么。一旦工作正常,您需要将脚本放在使用标准 Docker -v
参数挂载的目录中 https://www.zaproxy.org/docs/docker/full-scan/ 最后,您必须配置 ZAP 以使用本地参数告诉它脚本Docker 容器中的脚本。此常见问题解答中对此进行了详细说明:https://www.zaproxy.org/faq/how-do-you-add-a-script-to-zap-from-the-command-line/