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

SSRF: Cloud Metadata Bypass

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

mediumpythonPro
Задача
# SSRF: обход фильтра через облачный metadata-сервис ## Сценарий Перед вами Flask-приложение интернет-магазина SecureShop. В нём есть функция «сравнение цен»: пользователь подаёт URL внешнего магазина, сервер скачивает страницу и показывает её содержимое в ответ. В отличие от типичной SSRF-уязвимости первого уровня, здесь разработчик уже знал про SSRF и **добавил фильтр** — обращения к адресам, обозначающим «локальное» с точки зрения сервера, отвергаются. Однако фильтр сделан невнимательно: он закрывает только одну из нескольких категорий непубличных адресов. Приложение развёрнуто в облачной среде (AWS/GCP/Azure-подобный инстанс), и среди непубличных адресов есть особый класс, доступный изнутри инстанса. Через него обычно достаются креденшалы виртуальной машины, не предназначенные для внешнего мира. Ваша задача — найти этот класс и использовать его, чтобы достать CTF-флаг. ## Цели 1. Авторизуйтесь как `demo` / `demo` и найдите функцию загрузки URL. 2. Эмпирически установите, какие классы непубличных адресов фильтр блокирует, а какие — пропускает. 3. Воспользуйтесь обнаруженной слабостью фильтра, чтобы достучаться до облачного metadata-сервиса инстанса и получить от него credentials. 4. Извлеките CTF-флаг из ответа metadata-сервиса. ## Данные | Параметр | Значение | |----------|----------| | Обычный пользователь | `demo` / `demo` |
🚧 Сайт в разработке. Полный функционал пока недоступен. Все вопросы — support@hackandfix.ru