ウェブサイトでザップ プロキシ スキャンを自動化しようとしていました。以下は私の流れです
- Zap プロキシを開始する
- 新しいセッションを作成 (
/JSON/core/action/newSession/?apikey=12345&name=NewSession&overwrite=true) - 新しいコンテキストを作成 (
/JSON/context/action/newContext/?apikey=12345&contextName=NewContext) - 含める正規表現 URL パターンと除外する正規表現 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 テストを実行する
- Run active scan (
/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"}
ザップログでエラーを下回っています
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 を実行したいと考えています。どんな助けでも大歓迎です。