coreruleset/project-seaweed

GitHub: coreruleset/project-seaweed

基于 Nuclei Templates 自动化测试 WAF 对 CVE 防御能力的开源工具,由 OWASP CRS 团队维护。

Stars: 7 | Forks: 2

# Project Seaweed Seaweed 图片:Flaticon.com [![GitHub Workflow Status](https://img.shields.io/github/workflow/status/coreruleset/project-seaweed/CI)]() Project Seaweed 最初是 **Google Summer of Code 2022** 的一部分,隶属于 OWASP Foundation Core Rule Set 团队。 在 [Felipe Zipitría](https://github.com/fzipi) 的指导下进行。 Seaweed 是一个完全可定制且 CI/CD 友好的工具,旨在自动化测试 Web 应用防火墙对 各种 CVE 的防御能力。 它通过利用 [Project Discovery](https://github.com/projectdiscovery) 团队 [nuclei-templates](https://github.com/projectdiscovery/nuclei-templates) 提供的 PoC 来实现这一点。使用这些格式精美的 yaml 模板,我们 不仅可以测试防火墙,还能为防火墙测试过程生成元数据。测试结束后,我们会收到一条 Slack 消息形式的小结通知。 ![](/images/flowchart_white_back.drawio.png) ## 功能特性 1. **参数** 有两种方式可以修改工具的行为。你可以使用 CLI 标志或指定环境变量。 **CLI:** ``` ❯ ./project-seaweed --help Parses Nuclei test files output Usage: seaweed [flags] Flags: -f, --format format format to output the results; can be 'github' (default) or 'json' (default github) -h, --help help for seaweed -o, --output string path to find output trace files (default ".") ``` 2. **Docker 设置** 默认情况下,会创建一个包含 ModSec-CRS 反向代理容器(防火墙)和 Apache Web 服务器 容器的 Docker 设置,并且这两个容器都连接到一个网络。这样做是为了建立一个本地防火墙环境。 这有两个优点: - 消除了网络延迟,从而加快测试速度 - 不会干扰远程防火墙 3. **报告生成** 当 Nuclei 完成对防火墙的攻击发起后,我们会存储发出的请求和响应。如果 你想查看这些原始数据,可以指定一个目录,否则它将存储在一个临时目录中。 然后我们利用这些数据来判断 CVE 是否被拦截。如果攻击是多阶段的,我们会计算 攻击被拦截的比例(被拦截的请求数 / 总请求数)。基于此生成报告。 你可以将报告格式指定为 `github`(默认)或 `json`。 5. **扫描历史** 推荐在像 Github Actions 这样的 CI/CD 环境中使用此工具。 该 Github Action 会测试各种常见的 Web CVE,例如 xss、rce、sqli 等,同时对 nuclei 模板中所有可用的 CVE 进行完整测试。 6. **Slack 集成** 测试结束后,会向定义的 Slack 频道发送一条包含简短摘要的消息。 ![](/images/slack.png) 7. **报告对比** 待定 ## 使用方法 **安装** 1. **克隆仓库** `git clone https://github.com/coreruleset/project-seaweed.git` 3. **安装 docker** 本项目需要 docker 来搭建本地 Web 服务器和 Web 应用防火墙。如果你使用自定义 WAF URL 进行 测试,则不需要 docker。 [https://docs.docker.com/engine/install/](https://docs.docker.com/engine/install/) 6. **安装项目** 你需要系统安装了 Go 才能构建项目。 `go build` 7. **最后运行项目** ``` docker compose up ``` 这将启动 docker 容器并运行测试。默认情况下,结果将位于名为 `output` 的文件夹中。 现在使用以下命令运行报告工具: `./project-seaweed -o output`
标签:CI/CD安全, CRS, CVE验证, DevSecOps, Docker, EVTX分析, GitHub项目, Google, Go语言, GSoC, Llama, ModSecurity, Nuclei, Slack通知, WAF测试, YAML模板, 上游代理, 回归测试, 安全防御评估, 应用防火墙, 日志审计, 程序破解, 网络安全, 请求拦截, 谷歌编程之夏, 隐私保护