coreruleset/project-seaweed
GitHub: coreruleset/project-seaweed
基于 Nuclei Templates 自动化测试 WAF 对 CVE 防御能力的开源工具,由 OWASP CRS 团队维护。
Stars: 7 | Forks: 2
# Project Seaweed
图片:Flaticon.com
[]()
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 消息形式的小结通知。

## 功能特性
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 频道发送一条包含简短摘要的消息。

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`
图片:Flaticon.com
[]()
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 消息形式的小结通知。

## 功能特性
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 频道发送一条包含简短摘要的消息。

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模板, 上游代理, 回归测试, 安全防御评估, 应用防火墙, 日志审计, 程序破解, 网络安全, 请求拦截, 谷歌编程之夏, 隐私保护