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

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

SSRF: Redirect Bypass

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

Автор: Hack & Fix
Освоишь: allowlist URLmetadata-guard 169.254DNS-rebinding защита
Средне+60 XP ~35 мин python
CWE-918 · A10:2021 Pro
Обложка: SSRF: Redirect Bypass Обложка: SSRF: Redirect Bypass
Задача
# SSRF: обход фильтра через перенаправление ## Сценарий «Вектограм» — студия-магазин печатной графики: у мастеров профили, аватар можно загрузить по ссылке, и сервер сам скачивает картинку. После нашумевшей истории с утечкой через чужие аватары разработчик поставил фильтр адресов и успокоился. Владелец студии нанял вас проверить защиту до запуска новой линейки — и вас интересует не только что фильтр проверяет, но и чего он не замечает. ## Цель 1. Войдите покупателем и убедитесь, что прямая ссылка на внутренние адреса в форме загрузки аватара блокируется фильтром. 2. Найдите две слабости: кому фильтр доверяет без проверки адреса и какое стандартное поведение HTTP-клиента он не учитывает. 3. Выстройте цепочку из перенаправления: «безопасный» начальный адрес, ведущий внутренним эндпоинтом статистики, и получите флаг из ответа. ## Теория Проверка адреса перед запросом защищает ровно одно подключение — первое. HTTP-запрос — это цепочка шагов: сервер может ответить перенаправлением на любой другой адрес, а HTTP-клиент по умолчанию молча идёт за ним, ничего не перепроверяя. **Уязвимый паттерн:** ```python if not is_ip_safe(host): return 'Access Denied: Cannot access internal addresses', 403 resp = http_requests.get(url, timeout=5) ``` Вторая слабость — «удобство для разработки»: список доверенных внутренних имён, освобождённых от проверки адреса. Типичный корпоративный паттерн. Если доверенный сервис умеет перенаправлять туда, куда попросили, — достаточно подать его адрес с параметром-целью: фильтр пропустит первый шаг, а за перенаправлением клиент сам пойдёт к внутреннему эндпоинту уже без всякой проверки. ## Точка входа атаки `POST /profile/fetch-avatar` — форма на странице профиля, поле `url` (потребуется вход и токен формы со страницы профиля). * **Обычный пользователь:** `demo` / `demo`

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

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

SSRF: Cloud Metadata Bypass

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

+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