
Доказательство концепции уязвимости CVE в Traefik для понимания её воздействия
Добро пожаловать в CTF-задачу Shadow Corp Capture the Flag (CTF)! Эта задача проверит ваши навыки в выявлении и эксплуатации уязвимостей, связанных с заголовками безопасности и поведением HTTP-прокси. Ваша миссия — обойти защиту и раскрыть секреты, скрытые в веб-приложении Shadow Corp.
Вы обнаружили публичный веб-интерфейс Shadow Corp — печально известной организации, занимающейся скрытым кибершпионажем. Ходят слухи, что они защитили конечную точку, доступную только доверенным инсайдерам. Однако есть намёки, что с помощью правильных методов вы можете обмануть систему и заставить её раскрыть эту скрытую конечную точку, а затем узнать секреты Shadow Corp.
Ваша задача: получить доступ к защищённой конечной точке и извлечь скрытый флаг!
Эту CTF можно запустить локально, для этого потребуется установить и настроить веб-приложение.
Для запуска этого приложения требуется docker compose Для выполнения запросов и тестирования конечных точек рекомендуется использовать curl
Клонируйте репозиторий и перейдите в каталог проекта:
cd traefik-CVE-2024-45410-poc
Запустите CTF
docker compose up
Ваша основная цель — получить доступ к конечной точке /protected и извлечь секретный флаг. Однако вы заметите, что прямой доступ заблокирован, если не выполнены определённые условия. Система проверяет доверенные источники, проверяя заголовок X-Forwarded-Host.
Приложение настроено на разрешение доступа только с localhost (127.0.0.1). Однако если внимательно изучить HTTP-заголовки, можно найти способ «обмануть» сервер, заставив его поверить, что вы — доверенный источник. Изучите заголовки HTTP-прокси и то, как ими можно манипулировать.
Вы когда-нибудь изучали hop-by-hop заголовки? Эти заголовки обычно используются прокси для управления или изменения поведения пересылаемых запросов. Правильно манипулируя этими заголовками, вы, возможно, сможете убедить сервер, что запрос исходит из доверенного места, даже если это не так.
Заголовок Connection может всё изменить. Что, если бы вы могли ввести заголовок, которому система неявно доверяет? Изучите, как можно изменить заголовки запроса, чтобы включить X-Forwarded-Host таким образом, которого сервер не ожидает.
Пример команды (не решение)
Вот пример, как начать экспериментировать с curl:
curl -i http://localhost:5000/protected
Это покажет, что по умолчанию доступ запрещён.
В некоторых системах определённые заголовки считаются hop-by-hop, то есть они управляют поведением каждого промежуточного звена в цепочке HTTP-запросов. Эти заголовки удаляются или изменяются прокси. Однако, если умело манипулировать заголовками и указать правильный hop-by-hop заголовок, вы сможете обойти некоторые механизмы безопасности. Сосредоточьтесь на том, как работает заголовок Connection и как вы можете повлиять на другие заголовки, которые обычно не передаются дальше одного прыжка. Это может помочь вам обмануть сервер, заставив его думать, что вы — доверенный клиент.
Начните думать о том, как изменить ваш запрос, чтобы получить доступ. Ответ кроется в том, как приложение обрабатывает доверенные заголовки хоста. Помните, что манипулирование заголовками может быть ключом к решению этой CTF.