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

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

Path Traversal: /proc Leak

Обработчик скачивания файлов не блокирует /proc/self/environ — утечка секретов через переменные окружения.

Автор: Hack & Fix
Освоишь: filepath.Cleanchroot-подобиеbasename-фильтр
Сложно+90 XP ~60 мин python
CWE-22 · A01:2021 Pro
Обложка: Path Traversal: /proc Leak Обложка: Path Traversal: /proc Leak
Задача
# Обход пути (исключение для файловой системы процессов) ## Сценарий Вы — аудитор, которого «ТканьДом» — магазин тканей и штор — привлёк после рекламации клиента. Эндпоинт скачивания изображений образцов выглядит защищённым: разработчик изучил тему обхода пути, построил проверку границ и даже раскрытие символических ссылок. Но один класс путей он счёл безвредной «системной информацией» и разрешил нарочно. Руководство хочет понять, чем это грозит, до пятничного релиза витрины. ## Цель 1. Найдите эндпоинт скачивания и убедитесь, что обычные переходы в родительские каталоги блокируются проверкой. 2. Определите, какой класс путей проходит через защиту из-за исключения. 3. Через виртуальную файловую систему процессов доберитесь до состояния самого приложения и прочитайте его окружение — флаг находится там. ## Теория В Linux состояние работающих процессов ядро показывает через виртуальную файловую систему: это не файлы на диске, а живые срезы — командная строка, открытые дескрипторы, переменные окружения. Для приложения окружение — типичный канал доставки секретов, поэтому такие пути чувствительны не меньше ключей. Защита от обхода пути, построенная на чёрных списках или «безопасных исключениях», принципиально дырява: раз один класс путей пропускается намеренно, именно он становится дверью. **Уязвимый паттерн:** ```python target = os.path.join(BASE_DIR, filename) rel = os.path.relpath(target, BASE_DIR) if rel.startswith('..'): real_target = os.path.realpath(target) ``` Уход из базовой директории блокируется — но не для всех путей: виртуальная файловая система процессов проходит насквозь, а среди её файлов есть и окружение самого приложения. ## Точка входа атаки `GET /download` — имя файла передаётся параметром запроса `file`. Для входа в магазин используйте `POST /login` с полями `username` и `password`. * **Обычный покупатель:** `demo` / `demo`

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

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

Path Traversal: Normpath Bypass

Обработчик использует os.path.normpath() до конкатенации, что не предотвращает выход за пределы директории.

+60 XP
Python Pro
Exploit Fix
Обложка лабы: Path Traversal: Absolute Path Обложка лабы: Path Traversal: Absolute Path
Path Traversal

Path Traversal: Absolute Path

Обработчик скачивания файлов проверяет только '..' в пути, но не блокирует абсолютные пути. В Python os.path.join('/base', '/etc/passwd') возвращает '/etc/passwd' — второй аргумент абсолютный, base игнорируется.

+30 XP
Python Pro
Exploit Fix
Обложка лабы: Path Traversal: Базовый обход директорий Обложка лабы: Path Traversal: Базовый обход директорий
Path Traversal

Path Traversal: Базовый обход директорий

Классическая уязвимость Path Traversal через os.path.join() без проверки выхода за пределы базовой директории.

+30 XP
Python Pro
Exploit Fix
Обложка лабы: Path Traversal через двойное URL-кодирование Обложка лабы: Path Traversal через двойное URL-кодирование
Path Traversal

Path Traversal через двойное URL-кодирование

Обработчик скачивания файлов применяет filepath.Clean ДО URL-декодирования. Двойное кодирование (%252e%252e%252f) обходит проверку и позволяет читать произвольные файлы.

+90 XP
Go Pro
Exploit Fix