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

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

SSRF: эксфильтрация облачных credentials через метаданные

SSRF в /fetch-url без блокировки link-local адресов — IMDS отдаёт IAM credentials.

Автор: Hack & Fix
Освоишь: allowlist URLmetadata-guard 169.254DNS-rebinding защита
Сложно+90 XP ~65 мин nodejs
CWE-918 · A10:2021 Pro
Обложка: SSRF: эксфильтрация облачных credentials через метаданные Обложка: SSRF: эксфильтрация облачных credentials через метаданные
Задача
# SSRF: обход фильтра через сервис метаданных облака ## Сценарий Маркетплейс-агрегатор **«Терра-Юнион»** переехал в облако и открыл функцию «сравнение цен»: покупатель подаёт ссылку на страницу чужого магазина, а сервер на Express скачивает её и показывает содержимое. Разработчик знал про SSRF и поставил фильтр — обращения к «локальным» адресам отвергаются. Комплаенс-аудитор запросил независимую проверку защиты, и вам достался этот контур. ## Цель 1. Войдите как обычный пользователь, найдите форму сравнения цен и убедитесь, что обращения к loopback-адресам фильтр действительно блокирует. 2. Определите, какие классы «внутренних» адресов фильтр пропускает, и найдите среди них тот, по которому отвечает сервис метаданных облака. 3. Через непокрытый класс обратитесь к сервису метаданных и извлеките флаг из его ответа. ## Теория Защита от SSRF по списку сетей работает только тогда, когда список полон. Уязвимый фильтр знает один класс «внутренних» адресов и пропускает остальные: приватные сети, link-local, зарезервированные диапазоны. **Уязвимый паттерн:** ```js // фильтр отвергает только loopback-класс адресов if (isLoopbackIp(ip)) return false; // link-local и приватные проходят дальше ``` В облачных средах по link-local адресу — внутреннему адресу метаданных облака — отвечает служебный сервис инстанса: он отдаёт временные ключи доступа и параметры окружения без аутентификации, полагаясь на то, что «снаружи до него не достучаться». SSRF обходит это допущение: запрос выполняет сам сервер, уже находящийся внутри, и ответ сервиса возвращается на страницу сравнения цен. ## Точка входа атаки `POST /fetch-url` — поле `url` в форме сравнения цен на странице каталога; тело запрошенного ресурса отображается на странице. * **Обычный пользователь:** `demo` / `demo`

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

другие лабы по этой уязвимости
Обложка лабы: SSRF: Обход проверки URL через HTTP-редирект в Node.js Обложка лабы: SSRF: Обход проверки URL через HTTP-редирект в Node.js
SSRF

SSRF: Обход проверки URL через HTTP-редирект в Node.js

Админ-форма импорта продуктового фида проверяет hostname URL и отвергает loopback и приватные сети, но fetch() автоматически следует HTTP-редиректам — внешний сервер атакующего перенаправляет на внутренний /admin/stats и утечка флага.

+90 XP
Node.js Pro
Exploit Fix
Обложка лабы: SSRF: Fetch Avatar в Express + better-sqlite3 Обложка лабы: SSRF: Fetch Avatar в Express + better-sqlite3
SSRF

SSRF: Fetch Avatar в Express + better-sqlite3

Обработчик загрузки аватара в Express делает fetch по пользовательскому URL без валидации — доступ к внутреннему /admin/stats и утечка флага.

+30 XP
Node.js Pro
Exploit Fix
Обложка лабы: SSRF через обход проверки IP с помощью HTTP-редиректа Обложка лабы: SSRF через обход проверки IP с помощью HTTP-редиректа
SSRF

SSRF через обход проверки IP с помощью HTTP-редиректа

Приложение проверяет IP адрес при первом запросе, но cURL автоматически следует редиректам на внутренние адреса — атакующий обходит проверку через промежуточный сервер.

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

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

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

+60 XP
Go Pro
Exploit Fix