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

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

SSRF: Fetch Avatar

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

Автор: Hack & Fix
Освоишь: allowlist URLmetadata-guard 169.254DNS-rebinding защита
Легко+30 XP ~20 мин python
CWE-918 · A10:2021 Pro
Обложка: SSRF: Fetch Avatar Обложка: SSRF: Fetch Avatar
Задача
# SSRF: подделка запроса с сервера ## Сценарий «Лоцман» — интернет-магазин навигационного оборудования с сообществом покупателей. Чтобы не хранить аватары у себя, разработчик добавил в профиль функцию «загрузить по ссылке»: сервер сам скачивает картинку с указанного адреса. Вы проводите аудит по подписке на безопасность, и функция, заставляющая сервер идти по чужой ссылке, сразу притягивает взгляд. ## Цель 1. Войдите обычным покупателем и изучите форму загрузки аватара по ссылке на странице профиля. 2. Заставьте сервер через эту форму обратиться к внутреннему административному сервису, который отвечает только на самом узле приложения и недостижим снаружи. 3. Верните ответ внутреннего сервиса в браузер и извлеките из него флаг. ## Теория Server-Side Request Forgery — класс атак, при котором атакующий заставляет сервер выполнить сетевой запрос по выбранному им адресу. Сервер живёт внутри сетевого периметра: с него видны сервисы, недоступные извне, — административные панели, служебные эндпоинты, локальный интерфейс самого приложения. **Уязвимый паттерн:** ```python resp = http_requests.get(url, timeout=5) return resp.text, resp.status_code, {'Content-Type': resp.headers.get('Content-Type', 'text/plain')} ``` Адрес из формы уходит в запрос без какой-либо проверки. Клиент не может обратиться к внутреннему сервису напрямую, но может попросить об этом сервер: значение поля подставляется в запрос, выполняемый от лица приложения, а тело ответа внутреннего сервиса возвращается пользователю в ответе. ## Точка входа атаки `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: Redirect Bypass Обложка лабы: SSRF: Redirect Bypass
SSRF

SSRF: Redirect Bypass

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

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

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

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

+30 XP
Go 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