使用 OWASP ZAP 在 Jenkins 中进行自动安全测试
[
](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)
单击漏洞报告以查看安全测试的结果
如果我错过了什么,请告诉我!
更多推荐

所有评论(0)