Перейти к содержимому
← Каталог golang SSRF

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

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

easygolangPro
Задача
# SSRF: запрос к внутреннему эндпоинту через серверный HTTP-клиент ## Сценарий Вы зарегистрированы в интернет-магазине как пользователь **demo**. На странице профиля доступна функция загрузки аватара по URL: пользователь указывает адрес изображения, а сервер сам скачивает картинку и сохраняет копию. Команда уверена, что эндпоинт безопасен — это просто прокси для скачивания внешних ресурсов. По данным внутреннего аудита, в приложении есть административный эндпоинт со статистикой и сервисной информацией, доступный только с loopback-интерфейса; в его ответе раскрывается конфиденциальная метка, которую требуется извлечь. ## Цель 1. Изучите эндпоинт «скачать аватар по URL» и поведение серверного HTTP-клиента: что именно сервер делает с пользовательским URL. 2. Используя серверный HTTP-клиент как прокси, обратитесь к административному эндпоинту, защищённому проверкой IP источника запроса. 3. Извлеките флаг из ответа административного эндпоинта. ## Теория SSRF (Server-Side Request Forgery) — класс уязвимостей, при котором атакующий заставляет сервер выполнять HTTP-запрос по адресу, выбранному атакующим. Запрос исходит **от сервера**, поэтому имеет привилегии серверной сети: проходит файрволы, видит внутренние эндпоинты, использует loopback-интерфейс, а в облачных средах получает доступ к metadata-сервисам. SSRF превращает уязвимое приложение в proxy внутри доверительной границы. **Уязвимый паттерн:** ```go // Сервер делает запрос по URL, переданному пользователем, без проверки адреса url := r.FormValue("url") resp, _ := http.Get(url) ``` Ключевая ошибка — отсутствие проверки destination перед вызовом HTTP-клиента. Многие эндпоинты во внутренней инфраструктуре доверяют сетевой границе («доступно только с localhost», «доступно только из VPN», «доступно только из k8s-кластера»), но SSRF её обходит, потому что запрос всегда исходит из самой сети — от лица серверного процесса. ## Точка входа атаки `POST /fetch-avatar` — форма профиля принимает поле `url`, по которому сервер скачивает изображение аватара. * **Учётные данные:** `demo` / `demo` * **Цель:** заставить сервер обратиться к внутреннему эндпоинту со статистикой и получить флаг из ответа.
🚧 Сайт в разработке. Полный функционал пока недоступен. Все вопросы — support@hackandfix.ru