无法使用 Zap 代理对给定上下文启动主动扫描 (ascan)

Unable to Start active scan (ascan) on given context with Zap Proxy

正在尝试在网站上自动执行 zap 代理扫描。下面是我的流程

  1. 启动 Zap 代理
  2. 创建新会话(/JSON/core/action/newSession/?apikey=12345&name=NewSession&overwrite=true
  3. 创建新上下文(/JSON/context/action/newContext/?apikey=12345&contextName=NewContext
  4. 将包含和排除正则表达式 URL 模式添加到上下文 (/JSON/context/action/setContextRegexs/?apikey=12345&contextName=NewContext&incRegexs=[https://myowsapjuiceshop.herokuapp.com/*]&excRegexs=[^(?:(?!http.*://myowsapjuiceshop.herokuapp.com).*).$])
  5. 将技术添加到上下文中(/JSON/context/action/includeContextTechnologies/?apikey=12345&contextName=NewContext&technologyNames=Db.MySQL%2CLanguage.Java%2COS.Linux%2CWS.Tomcat
  6. 运行 UI 使用代理集进行测试
  7. 运行 主动扫描 (/JSON/ascan/action/scan/?apikey=12345&url=&recurse=&inScopeOnly=&scanPolicyName=&method=&postData=&contextId=2 ) // 2 是正确的 contextID
  8. 等待主动扫描完成 (/JSON/ascan/view/status/?apikey=12345&scanId=5 ) // 5 是我应该从第 7 步获得的扫描 ID (运行 主动扫描响应)
  9. 获取警报 json (/JSON/alert/view/alerts/?apikey=12345&baseurl=&start=&count=&riskId=)

在第 7 步之前一切正常,我卡在了第 7 步。基于文档 "Runs the active scanner against the given URL and/or Context...."。我的理解是我可以 运行 针对上下文进行主动扫描,并且当提到 ContextId 时 URL 是可选的。

但是,当我使用正确的 apikey 和 contextId /JSON/ascan/action/scan/?apikey=12345&url=&recurse=&inScopeOnly=&scanPolicyName=&method=&postData=&contextId=2

按 api 到 运行 主动扫描时

响应是 {"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 记录的匹配包括和排除我在上下文中设置的正则表达式。任何帮助将不胜感激。

您是否在上下文中定义了任何 URL? 如果是,这些 URL 是否在站点树中?