
Go-инструмент и шаблон Nuclei для тестирования James Kettle's (CVE-2025-32094) HTTP/1.1 must die: the desync endgame
Этот репозиторий содержит инструменты защитного тестирования для обнаружения уязвимостей контрабанды запросов HTTP/1 (desync), основанные на новаторском исследовании Джеймса Кеттла из PortSwigger.
Эта работа напрямую вдохновлена и реализует методы из:
Шаблоны атак, методы и способы обнаружения, реализованные в этих инструментах, основаны на пионерской работе Джеймса Кеттла, выявившей фундаментальные недостатки в реализации протокола HTTP/1.1 у крупных поставщиков веб-инфраструктуры.
Исследование Джеймса Кеттла продемонстрировало уязвимости, затрагивающие:
Неоднозначные определения границ запросов HTTP/1.1 создают то, что Джеймс Кеттл назвал «крайней неоднозначностью» относительно того, где начинаются и заканчиваются запросы. Это приводит к расхождениям в парсерах между фронтенд- и бэкенд-серверами, что позволяет осуществлять сложные атаки контрабанды запросов. Эти инструменты помогают выявлять такие уязвимости для защитного тестирования безопасности.
http1-desync-test.go)Комплексный тестер уязвимости HTTP/1 desync, реализующий множество шаблонов атак.
Content-Length: 0Expect: 100-continue для контрабанды запросовContent-Length и Transfer-Encoding# Клонировать репозиторий
git clone https://github.com/nconsolo/echteeteepee.git
cd echteeteepee
# Установить зависимости
go mod download
# Собрать инструмент
go build -o http1-desync-test http1-desync-test.go
# Проверить все шаблоны атак
./http1-desync-test -target https://example.com
# Проверить конкретный шаблон атаки
./http1-desync-test -target https://example.com -test vh
# Включить подробный вывод
./http1-desync-test -target https://example.com -verbose
# Установить произвольный таймаут
./http1-desync-test -target https://example.com -timeout 10s
-target: Целевой URL (обязательно)-test: Тип теста: all, vh, 0cl, expect, double, clte (по умолчанию: all)-timeout: Таймаут запроса (по умолчанию: 5s)-verbose: Включить подробный вывод для просмотра сырых запросов/ответовnuclei-templates/http1-desync.yaml)Автоматизированный шаблон сканирования для Nuclei для обнаружения уязвимостей HTTP/1 desync в масштабе.
# Установить Nuclei (если ещё не установлен)
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
# Скопировать шаблон в директорию шаблонов Nuclei
cp nuclei-templates/http1-desync.yaml ~/.nuclei-templates/
# Сканировать одну цель
nuclei -u https://example.com -t nuclei-templates/http1-desync.yaml
# Сканировать несколько целей
nuclei -l targets.txt -t nuclei-templates/http1-desync.yaml
# Сканировать с ограничением скорости
nuclei -u https://example.com -t nuclei-templates/http1-desync.yaml -rl 10
Все шаблоны атак основаны на результатах исследований Джеймса Кеттла и проверенных методах эксплуатации.
Источник: Исследование Джеймса Кеттла «HTTP/1 Must Die»
Эксплуатирует расхождения, когда фронтенд-прокси видит одну границу запроса, а бэкенд-сервер — другую. Вектор атаки встраивает скрытый запрос в то, что фронтенд воспринимает как данные заголовка, но бэкенд интерпретирует как отдельный запрос.
Пример из исследования: Используется для демонстрации различий парсеров у крупных CDN-провайдеров.
Источник: Находки уязвимостей Джеймса Кеттла в IIS и T-Mobile
Использует различные интерпретации заголовка Content-Length: 0 между серверами. Некоторые серверы игнорируют тело при CL=0, в то время как другие всё ещё обрабатывают его, что приводит к путанице с границами запросов.
Реальное влияние: Успешно эксплуатировалось против серверов IIS и инфраструктуры T-Mobile.
Источник: Исследование Джеймса Кеттла по T-Mobile и LastPass
Эксплуатирует механизм Expect: 100-continue, где фронтенд и бэкенд обрабатывают продолжение по-разному. Это создаёт возможности для контрабанды запросов, пока фронтенд ожидает ответ 100-continue.
Контекст исследования: Продемонстрировано против систем аутентификации T-Mobile и LastPass.
Источник: Продвинутая методология desync Джеймса Кеттла
Объединяет несколько desync-атак для отравления очереди ответов, позволяя атакующему контролировать, какие ответы получают другие пользователи. Это представляет одну из самых сложных атак в исследовании.
Критическое открытие: Позволяет полностью захватить сайт, отдавая вредоносные ответы легитимным пользователям.
Источник: Основные исследования неоднозначности HTTP/1.1 Джеймса Кеттла
Эксплуатирует конфликты между заголовками Content-Length и Transfer-Encoding: chunked. Разные серверы по-разному расставляют приоритеты этих заголовков, создавая расхождения парсеров, которые позволяют контрабанду запросов.
Основа: Эти конфликты представляют собой фундаментальный недостаток, выявленный Джеймсом Кеттлом в спецификации HTTP/1.1.
Основываясь на методологии исследования Джеймса Кеттла, инструменты ищут:
Следуя классификации воздействия Джеймса Кеттла:
Эти инструменты предназначены для:
НЕ ИСПОЛЬЗУЙТЕ эти инструменты:
Следуя методологии Джеймса Кеттла, инструменты поддерживают постоянные соединения HTTP/1.1 для правильного тестирования условий desync. Каждый тест создаёт одно TCP-соединение и отправляет несколько запросов для наблюдения различий в парсинге.
Векторы атак тщательно созданы на основе точных шаблонов, которые Джеймс Кеттл использовал в своих исследованиях, обеспечивая совместимость с поведением серверов, задокументированным им.
Логика обнаружения реализует те же индикаторы, которые Джеймс Кеттл использовал для выявления успешных desync-атак в ходе своего исследования Bug Bounty на сумму более 350 000 долларов.
Основано на находках и рекомендациях Джеймса Кеттла:
Лицензия MIT — см. файл LICENSE для подробностей
Эти инструменты предоставлены только для образовательных и защитных целей безопасности. Пользователи несут ответственность за наличие надлежащего разрешения перед тестированием любых систем. Авторы не несут ответственности за неправомерное использование или ущерб, причинённый этими инструментами.