Метаданные и SSRF
Специфичные для облака атаки
«Метаданные и SSRF» — бесплатный урок Ethical Hacking Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Ethical Hacking Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Ethical Hacking Academy содержит 4 уроков всего.
Служба метаданных экземпляра
Каждая облачная VM может обратиться к специальной внутренней конечной точке, чтобы получить сведения о себе: к службе метаданных экземпляра (IMDS). Важно, что она также может выдавать временные учётные данные роли, прикреплённой к экземпляру.
- AWS / GCP / Azure предоставляют метаданные по адресу
169.254.169.254 - Доступ к ней возможен только изнутри экземпляра
- Для локальных процессов аутентификация не требуется
Это удобство превращается в оружие в сочетании с SSRF.
Чтение метаданных AWS (IMDSv1)
В устаревшем IMDSv1 один запрос GET возвращает метаданные, включая учётные данные роли. Токен не требуется.
Именно поэтому IMDSv1 опасен, если в приложении есть SSRF.
# List roles attached to the instance
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/
# Retrieve the temporary credentials for a role
curl http://169.254.169.254/latest/meta-data/iam/security-credentials/app-roleЧто такое SSRF
Подделка запросов на стороне сервера (SSRF) — это уязвимость, при которой злоумышленник заставляет сервер выполнять HTTP-запросы от своего имени. Сервер становится прокси к ресурсам, недоступным злоумышленнику напрямую.
- Параметр URL, который сервер загружает
- Вебхук, генератор PDF или функция изменения размера изображения
- Любая функция, принимающая URL, предоставленный пользователем
Классическая цель SSRF в облаке — конечная точка метаданных.
SSRF встречается с метаданными
Смертельно опасное сочетание: приложение с SSRF позволяет злоумышленнику указать серверу адрес 169.254.169.254. Сервер получает учётные данные IAM экземпляра и возвращает их.
Теперь злоумышленник располагает облачными учётными данными — часто это первый шаг к полному захвату учётной записи.
# Vulnerable endpoint fetches any URL the user supplies
GET /fetch?url=http://example.com/image.png
# Attacker redirects it to the metadata service
GET /fetch?url=http://169.254.169.254/latest/meta-data/iam/security-credentials/app-roleИспользование украденных учётных данных
Ответ со страницы метаданных содержит ключ доступа, секретный ключ и токен сеанса. Злоумышленник экспортирует их и немедленно действует от имени роли экземпляра.
После этого он перечисляет разрешения и ищет пути повышения привилегий.
export AWS_ACCESS_KEY_ID=ASIA...
export AWS_SECRET_ACCESS_KEY=...
export AWS_SESSION_TOKEN=...
# Confirm the stolen identity
aws sts get-caller-identityIMDSv2 как средство защиты
AWS представила IMDSv2, чтобы снизить угрозу SSRF. Сначала требуется получить токен сеанса с помощью HTTP-запроса PUT, а большинство примитивов SSRF этого выполнить не могут — они поддерживают только GET.
Принудительное использование IMDSv2 и установка небольшого ограничения числа переходов значительно сокращают риск кражи метаданных через SSRF.
# IMDSv2: first PUT to get a session token
TOKEN=$(curl -X PUT 'http://169.254.169.254/latest/api/token' \
-H 'X-aws-ec2-metadata-token-ttl-seconds: 21600')
# Then GET using that token
curl -H "X-aws-ec2-metadata-token: $TOKEN" \
http://169.254.169.254/latest/meta-data/Метаданные Azure и GCP
Другие поставщики также предоставляют метаданные, но со своими особенностями. Оба требуют специальный заголовок, который сам по себе немного снижает риск SSRF.
- Azure требует заголовок
Metadata: true - GCP требует заголовок
Metadata-Flavor: Google
# Azure: fetch a managed-identity access token
curl -H 'Metadata: true' \
'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/'
# GCP: fetch a service-account token
curl -H 'Metadata-Flavor: Google' \
'http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token'Методы обхода SSRF
Защитники часто блокируют адрес 169.254.169.254. Злоумышленники обходят наивные фильтры с помощью альтернативных представлений IP-адресов и перенаправлений.
- Десятичное представление IP:
2852039166 - Восьмеричное или шестнадцатеричное представление того же адреса
- Перерегистрация DNS с последующим разрешением имени в IP-адрес метаданных
- Открытые перенаправления, отправляющие запрос к URL метаданных
Надёжная защита должна проверять разрешённый IP-адрес, а не исходную строку.
# The metadata IP in alternate notations (all 169.254.169.254)
http://2852039166/latest/meta-data/
http://0251.0376.0251.0376/latest/meta-data/Другие цели SSRF
Метаданные — главная цель, но SSRF позволяет обращаться и к другим внутренним ресурсам:
- Внутренние панели администрирования и информационные панели, привязанные к localhost
- Внутренние базы данных и кэши (Redis, Elasticsearch)
- Сервер API Kubernetes и конечные точки kubelet
- Другие микросервисы, недоступные извне
SSRF фактически пробивает сетевой периметр из доверенной точки обзора.
Защита от всей цепочки атаки
Чтобы разорвать цепочку от SSRF до метаданных, нужна многоуровневая защита:
- Принудительно использовать IMDSv2 и установить ограничение переходов к метаданным равным 1
- Проверять исходящие URL и разрешать их только по списку в функциях загрузки
- После разрешения DNS блокировать запросы к локальным и частным диапазонам IP-адресов
- Применять принцип минимальных привилегий к ролям экземпляров, чтобы украденные учётные данные давали ограниченный доступ
Роли с минимальными привилегиями гарантируют, что даже успешная кража принесёт мало пользы.
Проверяйте только то, на что у вас есть разрешение
Проверка SSRF по своей природе может затронуть важные внутренние системы. Соблюдайте дисциплину:
- Убедитесь, что целевой узел и облачная учётная запись входят в разрешённый scope
- Не переходите в системы, не охваченные соглашением
- Остановитесь и сообщите о результатах, как только подтвердите доступ к учётным данным
Доступ к метаданным имеет серьёзные последствия: демонстрируйте его осторожно и не используйте украденные ключи без ограничений.
Быстрая проверка
Почему принудительное использование IMDSv2 помогает защититься от кражи учётных данных через SSRF?
Итоги: метаданные и SSRF
Вы изучили наиболее значимую специфичную для облака цепочку атаки.
- Служба метаданных по адресу 169.254.169.254 выдаёт учётные данные роли экземпляра
- SSRF позволяет злоумышленнику заставить сервер обратиться к этой конечной точке
- Украденные временные учётные данные позволяют захватить учётную запись
- IMDSv2 блокирует большинство атак SSRF, требуя токен на основе PUT
- Защищайтесь с помощью списков разрешённых URL, проверки IP-адресов и ролей с минимальными привилегиями
На этом раздел «Тестирование облачной инфраструктуры» завершён. Следующий курс: поиск уязвимостей за вознаграждение.
Часто задаваемые вопросы
Урок «Метаданные и SSRF» бесплатный?
Да — полный текст урока «Метаданные и SSRF» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Ethical Hacking Academy, подпишись на CoddyKit PRO. Курс Ethical Hacking Academy содержит 4 уроков всего.
Чему я научусь в уроке «Метаданные и SSRF»?
Специфичные для облака атаки Ты практикуешь Ethical Hacking Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Ethical Hacking Academy?
Предыдущий опыт не требуется. Ethical Hacking Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Метаданные и SSRF»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Ethical Hacking Academy?
Да. Каждый урок Ethical Hacking Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Область атак в облаке
- Ошибки конфигурации IAM
- Раскрытие S3 и хранилищ
- Метаданные и SSRF