You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何捕获ZAP Proxy每次攻击的请求与响应详情?

问题描述

我在Docker容器中使用ZAP Proxy,对应的Dockerfile如下:

FROM softwaresecurityproject/zap-bare

ENV ZAP_AUTO_UPDATE=false

EXPOSE 9090

CMD ["sh", "-c", "nohup zap.sh -daemon -port 9090 -config api.disablekey=true -config api.addrs.addr.name=.* -config api.addrs.addr.regex=true -config view.mode=attack -host 0.0.0.0 -config network.localServers.mainProxy.behindNat=true -config network.connection.timeOutInSecs=120 -config network.httpState.timeoutInSecs=120 -config log.level=DEBUG & sleep 60 && curl 'http://localhost:9090/JSON/context/action/newContext/?contextName=ZAP_CONTEXT' && tail -f /dev/null"]

我想查看ZAP每次攻击的请求(请求头、请求体)与响应(响应头、响应体)详情,比如SQL注入攻击的请求体以及我的API对应的响应。
虽然已经把日志级别设为DEBUG,但主动扫描期间还是抓不到这些HTTP请求和响应的细节,目前只能看到这类日志:

2024-06-27 13:09:25 318242 [ZAP-Scanner-1] INFO org.parosproxy.paros.core.scanner.HostProcess - start host https://my-service.com | RemoteFileIncludeScanRule strength MEDIUM threshold MEDIUM
解决方法

要捕获ZAP主动扫描时的请求和响应细节,得调整ZAP的配置和日志设置,具体操作如下:

  • 开启HTTP请求/响应日志
    ZAP默认的DEBUG日志不会记录完整的请求响应内容,得单独启用HTTP流量日志。在zap.sh启动命令里添加这两个配置参数:
-config logger.org.parosproxy.paros.network.HttpSender.level=DEBUG
-config logger.org.zaproxy.zap.network.HttpSender.level=DEBUG

这两个日志器专门负责记录HTTP请求、响应的详细信息,包括头信息和请求体。

  • 更新Dockerfile的启动命令
    把上面的配置项加到原CMD命令中,修改后的CMD如下:
CMD ["sh", "-c", "nohup zap.sh -daemon -port 9090 -config api.disablekey=true -config api.addrs.addr.name=.* -config api.addrs.addr.regex=true -config view.mode=attack -host 0.0.0.0 -config network.localServers.mainProxy.behindNat=true -config network.connection.timeOutInSecs=120 -config network.httpState.timeoutInSecs=120 -config log.level=DEBUG -config logger.org.parosproxy.paros.network.HttpSender.level=DEBUG -config logger.org.zaproxy.zap.network.HttpSender.level=DEBUG & sleep 60 && curl 'http://localhost:9090/JSON/context/action/newContext/?contextName=ZAP_CONTEXT' && tail -f /dev/null"]
  • 查看日志内容
    重启Docker容器后,主动扫描的请求和响应细节就会输出到日志里。直接执行docker logs <你的容器ID>查看完整日志,里面会包含请求头、请求体、响应头、响应体这类具体内容。

  • 可选:用API导出结构化数据
    如果想要更规整的请求/响应数据,可以通过ZAP API导出扫描期间的HTTP消息。比如执行这个命令获取指定上下文的所有消息:

curl http://localhost:9090/JSON/core/view/messages/?contextName=ZAP_CONTEXT

返回的JSON数据里会包含所有请求和响应的详细信息,方便后续分析。

内容的提问来源于stack exchange,提问作者Sal-laS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 13:07:35