如何检查扫描后是不是生成了 ZAP 报告/警报?
Posted
技术标签:
【中文标题】如何检查扫描后是不是生成了 ZAP 报告/警报?【英文标题】:How to check if ZAP reports/alerts have been generated after scan?如何检查扫描后是否生成了 ZAP 报告/警报? 【发布时间】:2018-01-08 07:20:40 【问题描述】:我目前正在使用 REST-API(使用 Groovy 作为一种语言)与 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
【问题讨论】:
【参考方案1】:您正在运行蜘蛛并等待它正确完成。 但是 ZAP 在后台线程中执行被动扫描,这是您需要等待的。
对此也有 API 调用,这是一个很好的例子:https://github.com/zaproxy/zap-api-python/blob/master/src/examples/basic-spider-scan.py - 它使用 python API,但无论您使用什么客户端,底层 API 都是相同的。该 java 示例需要更新 ;)
顺便说一句,在您的代码中,您将执行被动扫描而不是主动扫描(ZAP 实际上攻击您的应用程序)。这是你想要的吗?
【讨论】:
被动扫描只是为了尝试。 Python 示例非常有用,等待records_to_scan
完美运行,谢谢!以上是关于如何检查扫描后是不是生成了 ZAP 报告/警报?的主要内容,如果未能解决你的问题,请参考以下文章