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

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

Path Traversal (Чтение окружения)

Выход из каталога изображений и чтение окружения процесса через procfs.

Автор: Hack & Fix
Освоишь: filepath.Cleanchroot-подобиеbasename-фильтр
Легко+30 XP ~15 мин golang
CWE-22 · A01:2021 Pro
Обложка: Path Traversal (Чтение окружения) Обложка: Path Traversal (Чтение окружения)
Задача
# Path Traversal: чтение окружения процесса ## Сценарий Вы — пентестер сервиса печати фотокниг **SnapTome**. Витрина отдаёт изображения по имени из параметра ссылки, а сервер собирает путь к диску склейкой строк. На планировании команду предупреждали, что секреты передаются приложению при старте, и разработчик возразил: «Файлы секретов мы на диск не пишем». Вам поручили проверить, действительно ли отсутствие файла означает отсутствие утечки. ## Цель 1. Изучите эндпоинт отдачи изображений: убедитесь, что имя файла присоединяется к базовому каталогу без проверки границы. 2. Выйдите за пределы каталога изображений и доберитесь до виртуальной файловой системы процессов. 3. Прочитайте псевдофайл с начальным окружением процесса приложения и извлеките флаг. ## Теория В Linux сведения о каждом запущенном процессе доступны через виртуальную файловую систему процессов: записи в ней — не файлы на диске, а живое состояние, включая окружение, с которым процесс был запущен. Секреты, переданные приложению при старте, остаются там в исходном виде. Если веб-приложение открывает путь, построенный из пользовательского ввода, без проверки границы каталога, атакующий добирается и до этих записей — чтение окружения процесса не требует отдельной уязвимости. **Уязвимый паттерн:** ```go fileName := r.URL.Query().Get("file") filePath := ImgBasePath + "/" + fileName file, err := os.Open(filePath) ``` Механика атаки: имя из запроса склеивается с базовым каталогом, после чего операционная система разрешает путь как есть. Повторяя подъём на уровень вверх, атакующий доходит до корня файловой системы, переходит в виртуальную файловую систему процессов, находит запись текущего процесса и читает его начальное окружение. ## Точка входа атаки `GET /download` — отдача изображения; имя файла передаётся параметром `file`. Аутентификация не требуется. * **Обычный пользователь (для знакомства с приложением):** `demo` / `demo`

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

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

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

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

+30 XP
Go Pro
Exploit Fix
Обложка лабы: Path Traversal (Базовый) Обложка лабы: Path Traversal (Базовый)
Path Traversal

Path Traversal (Базовый)

Классическая уязвимость Path Traversal через os.Open.

+30 XP
Go Pro
Exploit Fix
Обложка лабы: Path Traversal (Иллюзия filepath.Clean) Обложка лабы: Path Traversal (Иллюзия filepath.Clean)
Path Traversal

Path Traversal (Иллюзия filepath.Clean)

Обход неумелого использования функции filepath.Clean.

+60 XP
Go 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