Path Traversal

30 января, 2026, 21:35

Path Traversal (Обход пути, Directory Traversal) — это уязвимость веб-приложений и систем, позволяющая злоумышленнику получать несанкционированный доступ к файлам и каталогам, расположенным за пределами корневой директории, предназначенной для веб-контента. Атака возможна, когда приложение использует пользовательский ввод (например, параметры в URL или запросе) для построения пути к файлу без надлежащей проверки и очистки.

Возможности и механизмы атаки Path Traversal:

  • Чтение конфиденциальных файлов: Получение доступа к системным файлам (/etc/passwd/etc/shadow в Linux, C:\Windows\System32\config\SAM в Windows), файлам конфигурации приложения, логам, исходному коду и файлам других пользователей.
  • Запись произвольных файлов: В случаях, когда уязвимость позволяет не только читать, но и записывать файлы, возможна модификация существующих или создание новых файлов (например, webshell) для получения контроля над системой.
  • Основные векторы атаки: Использование специальных последовательностей для перемещения по файловой системе.

Path Traversal — критическая уязвимость, часто приводящая к полной компрометации системы. Она возникает из-за недостаточной проверки пользовательского ввода и доверия к нему при построении файловых операций. Уязвимость может встречаться не только в веб-приложениях, но и в FTP-серверах, системах управления контентом, API и клиентском ПО.

Защита от Path Traversal:

  1. Валидация по белому списку: Если приложение должно работать с определённым набором файлов, следует использовать белый список допустимых имён и отклонять всё остальное.
  2. Канонизация пути и проверка: Использование встроенных функций языка для приведения пути к канонической форме с последующей проверкой, что итоговый путь находится внутри разрешённой корневой директории.
  3. Хранение файлов вне корня веб-сервера: Размещение файлов, к которым нужен доступ через приложение, в директории, не доступной для прямого обращения через веб. Доступ должен осуществляться только через контролируемый код приложения (например, через скрипт-прокси).
  4. Использование идентификаторов вместо имён файлов: Хранение файлов в базе данных или файловой системе под сгенерированными именами (UUID), а предоставление доступа через ID, которые маппятся на реальные пути на сервере без участия пользовательского ввода.
  5. Принцип наименьших привилегий: Запуск веб-сервера и приложения от имени пользователя с минимально необходимыми правами на чтение/запись файлов.
  6. Регулярное тестирование: Включение проверок на Path Traversal в процесс тестирования безопасности (SAST, DAST, пентесты) с использованием чек-листов OWASP и инструментов вроде Burp Suite.

Эта уязвимость классифицируется в OWASP Top 10 в категории A01:2021-Broken Access Control и A03:2021-Injection, так как по своей природе является инъекцией в файловую систему. Успешная эксплуатация Path Traversal может стать первым шагом к полному контролю над сервером, особенно в комбинации с другими уязвимостями.

Упоминания