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

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

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

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

Автор: Hack & Fix
Освоишь: filepath.Cleanchroot-подобиеbasename-фильтр
Легко+30 XP ~15 мин python
CWE-22 · A01:2021 Pro
Обложка: Path Traversal: Базовый обход директорий Обложка: Path Traversal: Базовый обход директорий
Задача
# Обход пути (Path Traversal) ## Сценарий Вы — тестировщик безопасности на подряде у «СадГигант» — интернет-магазина растений и садового инвентаря. Каталог магазина богат изображениями, и разработчики сделали эндпоинт скачивания картинок: клиент присылает имя файла, сервер отдаёт содержимое из папки изображений. Владелец просил проверить «всё, что связано с файлами», после того как у соседнего маркетплейса утекли складские накладные. ## Цель 1. Найдите эндпоинт скачивания файлов и разберитесь, как сервер строит итоговый путь. 2. Проверьте, контролирует ли сервер границы папки, из которой раздаёт файлы. 3. Составьте имя файла, выводящее путь за пределы папки изображений, и прочитайте файл с флагом в соседней служебной директории. ## Теория Path Traversal (CWE-22) возникает, когда сервер строит путь к файлу из базовой директории и пользовательского ввода, не проверяя результат. В записи путей есть специальные последовательности со значением «на уровень вверх»: операционная система раскрывает их при обращении, и итоговый путь выходит за границы базовой папки. Простая склейка сегментов пути эту угрозу не останавливает. **Уязвимый паттерн:** ```python filepath = os.path.join(IMG_BASE_PATH, filename) return send_file(filepath) ``` Итоговый путь не нормализуется и не сверяется с базовой директорией: имя с переходами вверх принимается как есть, а файл отдаётся по получившемуся пути. ## Точка входа атаки `GET /download` — имя файла передаётся параметром запроса `file`. Для входа в магазин используйте `POST /login` с полями `username` и `password`. * **Обычный покупатель:** `demo` / `demo`

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

другие лабы по этой уязвимости
Обложка лабы: 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: Normpath Bypass Обложка лабы: Path Traversal: Normpath Bypass
Path Traversal

Path Traversal: Normpath Bypass

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

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

Path Traversal: /proc Leak

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

+90 XP
Python Pro
Exploit Fix
Обложка лабы: Path Traversal через абсолютный путь Обложка лабы: Path Traversal через абсолютный путь
Path Traversal

Path Traversal через абсолютный путь

Обработчик скачивания файлов проверяет только '..' в пути, но не блокирует абсолютные пути (/etc/passwd, /.env). Атакующий может читать любой файл на сервере.

+30 XP
Go Pro
Exploit Fix