试图在网站上自动执行 zap 代理扫描。下面是我的流程
- 启动 Zap 代理
- 创建新会话 (
/JSON/core/action/newSession/?apikey=12345&name=NewSession&overwrite=true
) - 创建新上下文 (
/JSON/context/action/newContext/?apikey=12345&contextName=NewContext
) - 将包含和排除正则表达式 URL 模式添加到上下文 (
/JSON/context/action/setContextRegexs/?apikey=12345&contextName=NewContext&incRegexs=[https://myowsapjuiceshop.herokuapp.com/*]&excRegexs=[^(?:(?!http.*://myowsapjuiceshop.herokuapp.com).*).$]
) - 将技术添加到上下文 (
/JSON/context/action/includeContextTechnologies/?apikey=12345&contextName=NewContext&technologyNames=Db.MySQL%2CLanguage.Java%2COS.Linux%2CWS.Tomcat
) - 使用代理集运行 UI 测试
- 运行主动扫描 (
/JSON/ascan/action/scan/?apikey=12345&url=&recurse=&inScopeOnly=&scanPolicyName=&method=&postData=&contextId=2
) // 2 是正确的 contextID - 等待主动扫描完成 (
/JSON/ascan/view/status/?apikey=12345&scanId=5
) // 5 是我应该从第 7 步获得的扫描 ID(运行主动扫描响应) - 获取警报 json (
/JSON/alert/view/alerts/?apikey=12345&baseurl=&start=&count=&riskId=
)
在第 7 步之前一切都很好,我停留在第 7 步。基于文档“针对给定的 URL 和/或上下文运行活动扫描程序......”。我的理解是,我可以针对上下文运行主动扫描,并且当提到 ContextId 时,URL 是可选的。
但是,当我点击 api 以使用正确的 apikey 和 contextId 运行主动扫描时 /JSON/ascan/action/scan/?apikey=12345&url=&recurse=&inScopeOnly=&scanPolicyName=&method=&postData=&contextId=2
回应是{"code":"missing_parameter","message":"Missing Parameter"}
我在 zap 日志中遇到错误
1581054 [ZAP-ProxyThread-65] WARN org.zaproxy.zap.extension.api.API - Bad request to API endpoint [/JSON/ascan/action/scan/] from [127.0.0.1]:
Missing Parameter (missing_parameter) : url
at org.zaproxy.zap.extension.ascan.ActiveScanAPI.scanURL(ActiveScanAPI.java:874)
at org.zaproxy.zap.extension.ascan.ActiveScanAPI.handleApiAction(ActiveScanAPI.java:369)
at org.zaproxy.zap.extension.api.API.handleApiRequest(API.java:506)
at org.parosproxy.paros.core.proxy.ProxyThread.processHttp(ProxyThread.java:499)
at org.parosproxy.paros.core.proxy.ProxyThread.run(ProxyThread.java:335)
at java.lang.Thread.run(Thread.java:748)
我想对记录的所有匹配的 URL 运行主动 ascan,包括和排除我在上下文中设置的正则表达式。任何帮助将不胜感激。