Path Traversal: /proc Leak
Обработчик скачивания файлов не блокирует /proc/self/environ — утечка секретов через переменные окружения.
hardpythonPro
Задача
# Path Traversal: blacklist-«jail» с дырой
## Сценарий
Перед вами Flask-приложение интернет-магазина SecureShop. Эндпоинт скачивания изображений товаров принимает имя файла из параметра запроса и возвращает содержимое из директории со статикой.
В отличие от первых двух Path Traversal-задач, здесь разработчик уже хорошо знаком с классом проблемы и реализовал нетривиальную «jail»-проверку: путь нормализуется, классические traversal-последовательности отбрасываются, явный выход за пределы базовой директории блокируется. Однако в логике защиты есть одно осознанное (или ошибочное) исключение: разработчик полагал, что один особый класс «системных» путей не несёт риска, и пропускает их через проверку. На самом деле именно этот класс путей в Linux даёт прямой доступ к секретам процесса — включая переменные окружения, в которых живёт CTF-флаг.
## Цели
1. Найдите эндпоинт скачивания файлов и убедитесь, что классические traversal-последовательности (`../`) корректно блокируются проверкой.
2. Эмпирически найдите класс путей, на который проверка не срабатывает: запросы с такими путями должны проходить и возвращать контент.
3. Через path-traversal в этот класс путей прочитайте секреты процесса и извлеките CTF-флаг прямо из ответа.
## Данные
| Параметр | Значение |
|----------|----------|
| Обычный пользователь | `demo` / `demo` |