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

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

SSRF: Cloud Metadata Bypass

SSRF-защита проверяет is_loopback но не is_link_local — доступ к cloud metadata 169.254.169.254.

Автор: Hack & Fix
Освоишь: allowlist URLmetadata-guard 169.254DNS-rebinding защита
Средне+60 XP ~35 мин python
CWE-918 · A10:2021 Pro
Обложка: SSRF: Cloud Metadata Bypass Обложка: SSRF: Cloud Metadata Bypass
Задача
# SSRF: служба метаданных облака за неполным фильтром ## Сценарий «СтратоМаркет» — маркетплейс электроники, работающий в облачной инфраструктуре. В каталоге есть функция сравнения цен: покупатель подаёт ссылку на страницу другого магазина, сервер скачивает её и показывает содержимое. Разработчик знает про SSRF и поставил перед загрузкой фильтр — обращения к «локальным» адресам отвергаются. Вы — аудитор облачной безопасности: проверьте, все ли опасные направления фильтр действительно закрывает. ## Цель 1. Войдите покупателем и изучите форму загрузки внешней страницы на странице каталога. 2. Установите, какой класс адресов фильтр блокирует, и убедитесь, что остальные непубличные классы он пропускает. 3. Через форму обратитесь к службе метаданных облака по её внутреннему адресу и получите временные учётные данные роли инстанса — флаг спрятан внутри них. ## Теория Облачная виртуальная машина общается со специальной службой метаданных по внутреннему адресу, невидимому снаружи. Служба отдаёт параметры инстанса, включая временные учётные данные назначенной роли, — в нормальной модели угроз туда «никто извне не достучится». SSRF ломает это допущение: запрос выполняет сам сервер. **Уязвимый паттерн:** ```python ip = ipaddress.ip_address(sockaddr[0]) if ip.is_loopback: return False ``` Фильтр распознаёт только обращения к самому узлу, а непубличных классов адресов больше: приватные сети, канальные локальные, зарезервированные диапазоны. Внутренний адрес метаданных облака относится к другому классу — канальному локальному, — поэтому беспрепятственно проходит проверку. В лаборатории служба метаданных эмулируется, но адрес, фильтр и ответ с учётными данными выглядят ровно как в настоящем облаке. ## Точка входа атаки `POST /fetch-url` — форма сравнения цен на странице каталога, поле `url`. * **Обычный пользователь:** `demo` / `demo`

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

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

SSRF: Redirect Bypass

Обработчик загрузки аватара проверяет IP начального URL, но requests.get() автоматически следует редиректам — внешний сервер перенаправляет на внутренний адрес.

+60 XP
Python Pro
Exploit Fix
Обложка лабы: SSRF: Fetch Avatar Обложка лабы: SSRF: Fetch Avatar
SSRF

SSRF: Fetch Avatar

Обработчик загрузки аватара делает HTTP-запрос по пользовательскому URL без валидации — доступ к внутренним сервисам.

+30 XP
Python Pro
Exploit Fix
Обложка лабы: Bypass SSRF: Обход фильтров хоста Обложка лабы: Bypass SSRF: Обход фильтров хоста
SSRF

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

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

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

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

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

+60 XP
Go Pro
Exploit Fix