tgoop.com/shadow_group_tg/1043
Create:
Last Update:
Last Update:
Раскрыли подробности CVE-2024-33452
. При обработке HTTP/1.1-запросов lua-nginx-module
некорректно разбирает HEAD-запросы с телом, воспринимая тело запроса как новый отдельный запрос.
Пример
Обычно прокси-серверы интерпретируют следующий HTTP-запрос как единый, поскольку GET /smuggle
находится в теле HEAD-запроса:
HEAD / HTTP/1.1
Host: localhost
Content-Length: 52
GET /smuggle HTTP/1.1
Host: localhost
Однако lua-nginx-module интерпретирует его как два отдельных запроса, что приводит к рассинхронизации прокси-серверов в цепочке.
Сценарии атак
Прокси-серверы, использующие lua-nginx-module, уязвимы к этой атаке (например, Kong Gateway, Apache APISIX и другие).
Пример с Kong Gateway
Если Kong работает самостоятельно, уязвимость не представляет особой опасности. Но если Kong используется в связке с фронт-прокси (например, Nginx, Cloudflare и т. д.), злоумышленник может:
1. Внедрять вредоносные ответы (например, XSS-атаки).
2. Обходить защиту фронт-прокси (например, обход Cloudflare).
3. Перехватывать ответы других пользователей.
Этот сценарий позволяет заставить всех пользователей загрузить вредоносный ответ с XSS-кодом, даже если сайт использует обычную страницу Apache.
HEAD / HTTP/1.1
Host: localhost
Content-Length: 122
HEAD /app HTTP/1.1
Host: localhost
Connection: keep-alive
GET /app/assets?<script>alert(origin)</script> HTTP/1.1
X:
Результат: Все пользователи, отправляющие обычные запросы, получат XSS-скрипт в ответе.
Допустим, Cloudflare блокирует доступ к
/admin
. Злоумышленник может скрыть GET-запрос к /admin
внутри HEAD-запроса и обойти защиту.Пример:
HEAD / HTTP/1.1
Host: victim.com
Content-Length: 40
GET /admin HTTP/1.1
Host: victim.com
Результат: Cloudflare не увидит GET-запрос, и злоумышленник сможет обойти защиту.
Этот метод позволяет рассинхронизировать очередь ответов на сервере и захватить ответы других пользователей.
Пример атаки
1. Атакующий отправляет HEAD-запрос с внедрённым GET-запросом.
2. Сервер ошибочно интерпретирует тело как отдельный запрос.
3. Ответ попадает не атакующему, а следующему пользователю, а атакующий может забрать ответ жертвы.
Подробности
Более подробное описание читайте в блоге по ссылке.
#web #hrs #xss