Перейти к содержимому

Поиск по платформе

SSRF Cloud Metadata: Доступ к метаданным облака

SSRF-уязвимость: неполная фильтрация IP позволяет обратиться к link-local адресу облачных метаданных (169.254.169.254).

Автор: Hack & Fix
Освоишь: allowlist URLmetadata-guard 169.254DNS-rebinding защита
Средне+60 XP ~35 мин golang
CWE-918 · A10:2021 Pro
Обложка: SSRF Cloud Metadata: Доступ к метаданным облака Обложка: SSRF Cloud Metadata: Доступ к метаданным облака
Задача
# SSRF: доступ к метаданным инстанса через неполную фильтрацию ## Сценарий Вы аудируете **AuroraDeploy** — платформу предпросмотра ссылок, развёрнутую в облаке. Пользователь передаёт URL, сервер скачивает страницу и показывает содержимое. После прошлого инцидента команда добавила фильтр: обращения к loopback-адресам блокируются. В учебном кластере лабы облачный **Instance Metadata Service** эмулируется служебным эндпоинтом самого приложения — как в реальном облаке, он отдаёт данные «инстанса», включая секрет. Требуется добраться до него через предпросмотр, несмотря на фильтр. ## Цель 1. Подтвердите, что прямое обращение к приложению через loopback-адрес действительно блокируется фильтром. 2. Определите, какие классы «внутренних» адресов фильтр не покрывает, и найдите запись, которая приводит запрос в тот же процесс, но loopback-ом не считается. 3. Обратитесь к эндпоинту метаданных через предпросмотр и извлеките флаг из служебного ответа. ## Теория В облачных средах каждый инстанс может обращаться к **Instance Metadata Service** — служебному HTTP-интерфейсу по фиксированному link-local адресу. IMDS отдаёт IAM-токены, ключи и конфигурацию без аутентификации: единственная защита — доступность только изнутри инстанса. SSRF превращает функцию предпросмотра в окно к метаданным. **Уязвимый паттерн:** ```go ip := net.ParseIP(host) if host == "localhost" || (ip != nil && ip.IsLoopback()) { http.Error(w, "Access denied: localhost is blocked", http.StatusForbidden) ``` Фильтр покрывает только loopback. Остальные зарезервированные классы — приватные диапазоны, link-local, включая адрес метаданных, и «неопределённый» адрес — проходят проверку. При этом «неопределённый» адрес и сокращённые записи маршрутизируются в тот же локальный процесс: подключение достигает приложения, минуя блокировку. ## Точка входа атаки `GET /url-preview` — параметр `url`; авторизация не требуется. * **Цель:** эндпоинт метаданных — служебный маршрут приложения, отдающий данные «инстанса» с флагом * **Флаг:** секретное поле в JSON-ответе эндпоинта метаданных

Похожие лабораторные (4)

другие лабы по этой уязвимости
Обложка лабы: Bypass SSRF: Обход фильтров хоста Обложка лабы: Bypass SSRF: Обход фильтров хоста
SSRF

Bypass SSRF: Обход фильтров хоста

SSRF с обходом слабого фильтра хоста в URL и эксплуатация через альтернативные IP-адреса.

+60 XP
Go Pro
Exploit Fix
Обложка лабы: SSRF Redirect: Обход валидации через HTTP-редирект Обложка лабы: SSRF Redirect: Обход валидации через HTTP-редирект
SSRF

SSRF Redirect: Обход валидации через HTTP-редирект

SSRF-уязвимость: валидация URL обходится через HTTP-редирект на внутренний адрес.

+60 XP
Go Pro
Exploit Fix
Обложка лабы: Basic SSRF: Доступ к админке Обложка лабы: Basic SSRF: Доступ к админке
SSRF

Basic SSRF: Доступ к админке

Простая SSRF-уязвимость, позволяющая получить доступ к внутренним ресурсам сервера.

+30 XP
Go Pro
Exploit Fix
Обложка лабы: SSRF к облачным метаданным через обход проверки IP Обложка лабы: SSRF к облачным метаданным через обход проверки IP
SSRF

SSRF к облачным метаданным через обход проверки IP

Приложение блокирует только loopback-адреса, но не link-local 169.254.169.254 — атакующий читает облачные метаданные AWS.

+60 XP
PHP Pro
Exploit Fix