2017-08-01 41 views
2

我目前正在使用REST-API(使用Groovy作爲一種語言)與ZAP進行交互。如何檢查ZAP報告/警報是否在掃描後生成?

我想要實現的是在掃描完成後開始掃描並檢索結果。

我目前正在查看掃描狀態,並假設我可以在掃描狀態爲100時檢索結果,表明掃描已完成。但這不起作用,我必須持續查詢/JSON/core/view/alerts/,直到檢索到實際結果。

這基本上是我的代碼:

String zapUrl = ${zap.getContainerIpAddress()}:8090" 

def scanResponse = slurper.parse(new URL("$zapUrl/JSON/spider/action/scan/?url=http://featuretron:8080")) 
String scanId = scanResponse.scan 

def scanStatus = slurper.parse(new URL("$zapUrl/JSON/spider/view/status/?scanId=$scanId")) 

while (scanStatus.status != "100") { 
    sleep(500) 
    scanStatus = slurper.parse(new URL("$zapUrl/JSON/spider/view/status/?scanId=$scanId")) 
} 

def alerts = slurper.parse(new URL("$zapUrl/JSON/core/view/alerts/")) 
while (alerts.alerts.isEmpty()) { 
    sleep(500) 
    alerts = slurper.parse(new URL("$zapUrl/JSON/core/view/alerts/")) 
} 

我的問題是,如果存在,它指示的結果已經產生了更穩定的方式。它也似乎,彷彿Java的API的官方例子等待,以及:

https://github.com/zaproxy/zap-api-java/blob/develop/subprojects/zap-clientapi/src/examples/java/org/zaproxy/clientapi/examples/SimpleExample.java#L65

回答

2

您正在運行的蜘蛛等待它準確地完成。 然而ZAP在後臺線程中執行被動掃描,這就是你需要等待的東西。

這裏也有API調用,這是一個很好的例子:https://github.com/zaproxy/zap-api-python/blob/master/src/examples/basic-spider-scan.py - 它使用python API,但無論您使用什麼客戶端,底層API都是相同的。該java示例需要更新;)

順便說一句,你只是要執行被動掃描而不是主動掃描(其中ZAP實際上會攻擊你的應用程序)。這是你想要的嗎?

+1

被動掃描只是爲了嘗試。 Python示例非常有用,並且正在等待'records_to_scan'完美工作,thx! –