OWASP ZAP:持续集成中的主动扫描器

Posted

技术标签:

【中文标题】OWASP ZAP:持续集成中的主动扫描器【英文标题】:OWASP ZAP: Active Scanner in Continuos Integration 【发布时间】:2016-04-11 23:15:56 【问题描述】:

尝试在持续集成 (CI) 设置中使用 ZAP (2.4.3)。我可以将 ZAP 作为守护程序运行,通过使用 ZAP 作为代理运行我所有的 Selenium 测试(在 Java 中),然后能够使用调用 htmlreport 的 REST api 来获得被动扫描器的最终报告。这很好用,但我也想使用 Active Scanner。

在 ZAP 的文档中多次提到在 CI 中使用 Active Scanner,但没有找到任何关于它的工作示例或教程……是否存在?

我想要实现的是:在 Selenium 回归套件访问的所有页面上运行 Active Scanner,一旦它完成运行。

试图查看 ZAP 的 REST api,但大多没有记录:

https://github.com/zaproxy/zaproxy/wiki/ApiGen_Index

理想情况下,最好有类似的东西:

对所有访问的 url 异步启动 Active Scan 轮询以检查 Active Scan 运行是否已完成

在 REST api 中似乎有一些相关的东西,但是:

ascan/scan 需要一个 url 作为输入。可以调用core/urls 来查看 Selenium 测试访问的内容,但是如何设置正确的身份验证(日志凭证)?如果访问 url 的顺序很重要怎么办?如果页面只能通过特定的凭据访问怎么办? 有一个ascan/scanAsUser,但不清楚如何从ZAP 中检索contextIduserId。一个麻烦的解决方法是修改 Selenium 测试以在磁盘上写入他们访问的 url 以及他们正在使用的日志记录/密码凭据,然后,一旦所有测试完成,从磁盘读取此类信息以调用 ZAP。有没有更简单的方法?

【问题讨论】:

【参考方案1】:

好的,这里有很多问题:)

ZAP 通常会扫描 URL 的层次结构,例如 https://www.example.com/app 应用程序的*** URL 下的所有内容。我们假设你知道那会是什么;)

身份验证并非易事,请参阅https://github.com/zaproxy/zaproxy/wiki/FAQformauth

ascan/status 调用返回完成的%

您可能会发现 ZAP 用户组 http://groups.google.com/group/zaproxy-users 更适合此类问题。 但是,是的,我们确实需要改进 API 文档:/

干杯,

西蒙(ZAP 项目负责人)

【讨论】:

谢谢。我在groups.google.com/forum/#!topic/zaproxy-users/y2MHYEOr-HQ 上转发了一些问题

以上是关于OWASP ZAP:持续集成中的主动扫描器的主要内容,如果未能解决你的问题,请参考以下文章

红队工具推荐——OWASP ZAP

OWASP ZAP 中的被动扫描

OWASP ZAP - 扫描 url 列表

使用Jenkins+Calabash+Cocoapods搭建iOS持续集成环境

尝试扫描时 OWASP/ZAP 悬空

持续集成--Jenkins--2