exetr/zap-cicd-integration
GitHub: exetr/zap-cicd-integration
一个将OWASP ZAP动态安全扫描集成到CI/CD流水线的Python脚本,支持误报抑制、自定义规则和构建门禁控制。
Stars: 10 | Forks: 6
# zap-cicd-集成
一个旨在集成到 CI/CD 流水线中的 Python 脚本,作为漏洞评估阶段的一部分,并结合 OWASP Zed Attack Proxy (ZAP) 使用。
该脚本目前的功能包括:
- 能够从警报摘要和报告中抑制误报
- 输出 Team Foundation Server (TFS) 日志记录命令
- 根据警报使 Team Foundation Server (TFS) 构建和发布失败
- 将 HTML 报告附加到 Team Foundation Server (TFS) 日志
## 环境要求
- Python 3.6 或更高版本
- python-owasp-zap-v2.4 包
- 运行中的 OWASP ZAP 实例
## 用法
```
usage: zap.py [-h] -t T [-c C] [-s S] [-r R] [-host HOST] [-port PORT]
[-api API] [-tfs]
A Python script to perform operations in OWASP Zed Attack Proxy, designed for use in vulnerability assessment stages in CI/CD pipelines.
optional arguments:
-h, --help show this help message and exit
-t T Target of vulnerability assessment
-c C ONLY FOR TFS SUMMARY - Ruleset JSON configuration file
(default=all rules enabled)
-s S JSON file containing list of false positives
-r R Name of report to be generated (default=zap-
report.html)
-host HOST Set host of ZAP instance, (default=127.0.0.1)
-port PORT Set port which ZAP instance is listening on, (default=8082)
-api API Specify API key of ZAP instance, if any, (default=none)
-tfs TFS mode, output summary of results compliant to TFS
```
## 配置
此 Python 脚本使用 JSON 文件存储以下配置:
- 要抑制的警报列表
{"instances": [
{"URL":"http://10.0.0.99/scripts/app.js", "AlertID":"2"},
{"URL":"http://10.0.0.99/scripts/app.js", "AlertID":"3"},
]
}
注意:建议参考以前的报告以获取 URL 列表和相应的警报 ID
- 警报严重级别(仅限 TFS)
{"alerts": [
{"id": 50001, "level":"WARN", "message": "Script Passive Scan Rules"},
{"id": 50003, "level":"WARN", "message": "Stats Passive Scan Rule"},
{"id": 90022, "level":"WARN", "message": "Application Error Disclosure"},
{"id": 10015, "level":"WARN", "message": "Incomplete or No Cache-control and Pragma HTTP Header Set"},
{"id": 10019, "level":"WARN", "message": "Content-Type Header Missing"},
{"id": 10010, "level":"WARN", "message": "Cookie No HttpOnly Flag"},
{"id": 10011, "level":"WARN", "message": "Cookie Without Secure Flag"},
{"id": 10017, "level":"WARN", "message": "Cross-Domain JavaScript Source File Inclusion"},
{"id": 10016, "level":"WARN", "message": "Web Browser XSS Protection Not Enabled"},
{"id": 10040, "level":"WARN", "message": "Secure Pages Include Mixed Content"},
{"id": 2, "level":"WARN", "message": "Private IP Disclosure"},
{"id": 3, "level":"WARN", "message": "Session ID in URL Rewrite"},
{"id": 10021, "level":"WARN", "message": "X-Content-Type-Options Header Missing"},
{"id": 10020, "level":"WARN", "message": "X-Frame-Options Header Scanner"}
]
}
注意:ZAP 扫描的更新警报完整列表可以在 ZAP 本地 API 的 pscan > scanners 中找到
## 示例
1. 对 http://example.com 执行爬虫扫描
`python zap.py -t http://example.com`
2. 对 http://example.com 执行爬虫扫描,使用指定了 API 密钥的 ZAP 实例,生成名为 zap-results.html 的报告
`python zap.py -api 9l67llmogm1cr6trcu683fqddq -t http://example.com -r zap-results.html `
3. 对 http://example.com 执行爬虫扫描,抑制 false-positive.json 中包含的警报列表
`python zap.py -t http://example.com -s false-positive.json`
4. 在 TFS 中对 http://example.com 执行爬虫扫描
`python zap.py -tfs -t http://example.com `
5. 在 TFS 中对 http://example.com 执行爬虫扫描,如果检测到规则 ID 2 则使构建失败,抑制 false-positive.json 中包含的警报列表,生成名为 zap-tfsbuild.html 的报告
`python zap.py -tfs -t http://example.com -c rules.json -s false-positive.json -r zap-tfsbuild.html`
标签:AES-256, Azure DevOps, CI/CD 安全, DAST, DevSecOps, GUI界面, OWASP ZAP, Python, Team Foundation Server, Web 安全, 上游代理, 动态应用程序安全测试, 安全扫描, 安全报告, 应用程序安全, 开源框架, 恶意软件分析, 持续交付, 持续集成, 数据投毒防御, 无后门, 时序注入, 漏洞评估, 管道集成, 误报抑制, 逆向工具