[](https://res.cloudinary.com/practicaldev/image/fetch/s--YJBGaquQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1. medium.com/max/790/1%2A6qCQfcu5ZX7Eq_C1mqOLqA.png)

OWASP ZAP是一种非常流行的工具,用于查找代码库和实例/服务器设置中的漏洞。

[](https://res.cloudinary.com/practicaldev/image/fetch/s--PPEsZKJR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1。 medium.com/max/64/1%2AAr8NCL0OVmq0GU6wzzxSQA.png)

OWASP ZAP 徽标

它的基本作用是爬取你的网站,然后扫描它在爬取过程中发现的所有 URL 上的漏洞。

session 是测试的一个实例。在一个会话中,您可以有多个上下文。

上下文 帮助 ZAP 仅扫描您想要的 URL。

例如,如果您在页面中直接包含引导程序:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">

ZAP 将不可避免地找到这个 URL。而且由于您肯定不希望 ZAP 扫描https://maxcdn.bootstrapcdn.com中的漏洞,因此您将其排除在上下文之外。

因此,您可以根据要扫描的内容从上下文中包含或排除 URL。

在遵循本指南之前,您可能应该在您的计算机上玩 OWASP ZAP 客户端以了解基本概念

振作起来,设置 OWASP ZAP Jenkins 插件将是一段漫长的旅程!

在您的 Jenkins 实例上下载并安装 OWASP ZAP

转到https://github.com/zaproxy/zaproxy/wiki/Downloads并下载适用于您平台的客户端版本。

例如,解压缩并将文件夹移动到 /usr/local/bin。

然后将环境变量 ZAPROXY_HOME 设置为 ZAP 代理安装文件夹的路径:

vim /etc/environment

并粘贴以下内容:

ZAPROXY\_HOME=/usr/local/bin/ZAP\_2.x.x/

安装 OWASP ZAP 插件

要在您的 Jenkins 实例上安装官方 OWASP ZAP 插件,请转到管理 Jenkins -> 管理插件 -> 可用(它是一个选项卡)-> 查找 OWASP ZAP。

[](https://res.cloudinary.com/practicaldev/image/fetch/s--IjrMvsDg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1. medium.com/max/574/1%2A1A4Zmuc0rk27mc2SJrp8gg.png)

要安装的插件

安装它。

通过转到管理 Jenkins -> 配置系统并填写以下字段来配置插件。

[](https://res.cloudinary.com/practicaldev/image/fetch/s--hJiRX64k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1. medium.com/max/885/1%2AW0-GYn-rWI_EHTcRChsYNA.png)

8089端口是一个例子,你可以在这里选择你想要的端口

创建一个新的 Jenkins 作业

创建一个新的自由式项目并填写以下字段:

  • 丢弃旧版本

[](https://res.cloudinary.com/practicaldev/image/fetch/s--V78Y5mIF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1。 medium.com/max/934/1%2AxlaV6P8g3UTvccOrtmjwnw.png)

确保我们的项目不会占用太多空间

  • 构建触发器(可选)

[](https://res.cloudinary.com/practicaldev/image/fetch/s--60WGMuFY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1。 medium.com/max/934/1%2ASttXjjWEcSNadq9cGLQJ5Q.png)

每周日凌晨 2 点运行作业

  • 添加执行 ZAP 构建步骤

在执行 ZAP 构建步骤中:

[](https://res.cloudinary.com/practicaldev/image/fetch/s--8SrWt_3A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1。 medium.com/max/899/1%2AhbOocOWkKTMZqfbg2Mw0WQ.png)

它应该反映在您安装插件的步骤中填写的字段值

[](https://res.cloudinary.com/practicaldev/image/fetch/s--qqzA_sce--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1. medium.com/max/896/1%2ArM_ePR_RP5dI3ssh23HHmg.png)

指定 OWASP ZAP bin 在我们的 Jenkins 实例上的安装位置

[](https://res.cloudinary.com/practicaldev/image/fetch/s--4oQXr4Rl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1。 medium.com/max/887/1%2AkinmgLX05-2oLHsv4NZoDg.png)

应该是您正在创建的 Jenkins 作业目录的路径

[](https://res.cloudinary.com/practicaldev/image/fetch/s--MKHIgciz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1。 medium.com/max/901/1%2Agpgt_r0xG2p9lC1jc68Tsg.png)

还记得我们谈到上下文的时候吗?您可以在此处指定应包含和排除哪些 URL。这里http://10.0.40.3是我托管我要测试的网站的地方。 * 表示我希望 ZAP 在上下文中包含以http://10.0.40.3开头的所有 URL

[](https://res.cloudinary.com/practicaldev/image/fetch/s--aTo18zmd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1. medium.com/max/898/1%2AZfdzD883IYrAG19Ujo6pqQ.png)

告诉 ZAP 首先抓取 URL,然后扫描它找到的 URL

[](https://res.cloudinary.com/practicaldev/image/fetch/s--wf96Y8IX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1。 medium.com/max/900/1%2AWLPR-d8-OEQ8OMsxi9DHFQ.png)

告诉 ZAP 生成哪些报告以及放置它们的位置

最后回到会话管理部分,它需要比其他更多的解释:

如果您勾选复选框 Persist Session ZAP 将为您创建一个新会话。这是最简单的设置选项,但也是最不彻底的。

如果您的 Web 应用程序有登录页面,ZAP 将不知道要使用哪些凭据来访问您的 Web 应用程序的私有区域。因此,ZAP 只会攻击您网站的公共部分并错过其中的很大一部分。

为了帮助 ZAP 了解凭据,您需要做的是使用计算机上的 GUI 客户端生成一个 ZAP 会话,您可以在其中分配一个有效的会话 cookie。然后,您将导出并上传您创建的会话到新的 Jenkins 作业文件夹,然后勾选加载会话复选框并在选择列表中选择您的会话。

[](https://res.cloudinary.com/practicaldev/image/fetch/s--GFHCUr5W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1。 medium.com/max/897/1%2A08Jz7vF8gyH55fyrXMe57w.png)

对于我们的基本示例,我们将勾选 Persist Session 复选框

  • 添加发布 HTML 报告构建后步骤

[](https://res.cloudinary.com/practicaldev/image/fetch/s--Jto_4LLB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1。 medium.com/max/928/1%2AeRnZdkHf5dAD_NvJCan7-Q.png)

就是这样!手动构建作业或等待您的 cron 计划执行它,您应该会在 Jenkins 作业仪表板中看到 ZAP 测试的 HTML 报告。

[](https://res.cloudinary.com/practicaldev/image/fetch/s--dS7ux4x0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1。 medium.com/max/179/1%2AUb5D2hgoSsIcR12MtH1KFg.png)

单击漏洞报告以查看安全测试的结果

如果我错过了什么,请告诉我!

Logo

CI/CD社区为您提供最前沿的新闻资讯和知识内容

更多推荐