Path Traversal (Directory Traversal, LFR) — чтение файлов

Я исследую веб‑безопасность и делюсь практическими разбориками уязвимостей: от CSRF и XXE до Server‑Side XSS, race conditions и обходов CSP. Пишу чек‑листы атак и защиты, редкие кейсы из практики и мысли о мышлении пентестера. Только прикладной AppSec, понятные примеры и то, что реально встречается в проде. Учимся охотиться, пока на нас не охотятся.

path traversaldirectory traversallfr

🤩Path Traversal - это веб-уязвимость, которая позволяет атакующему читать произвольные файлы на системе.

🤩Здесь не случайно было подчеркнуто читать. Есть несколько уязвимостей с похожим влиянием и названием. Directory Traversal == Path Traversal == Local File Read (LFR) - эти уязвимости позволяют только чтение файлов операционной системы.

🤩Тип:
Web, Server-Side.

У данной уязвимости нет как таковых разновидностей. Однако есть несколько похожих уязвимостей с более критичным влиянием:

  • 🤩Local File Inclusion (LFI) - Позволяет загрузить и исполнить файл с операционной системы. В данном случае, если на системе будет файл с вредоносной нагрузкой (например, php-shell), мы получим исполнение кода.
  • 🤩Remote File Inclusion (RFI) - Позволяет загрузить и исполнить внешний файл, т.е. не обязательно хранящийся на системе. Этот вариант является более критичным, так как для эксплуатации нам не требуется предварительно загружать файл на систему/пытаться отравить уже существующие файлы.

🤩Пример полезной нагрузки:

http://example.com?file=../../../../../../../etc/passwd

🤩Влияние:
Чтение файлов на системе.

🤩Как защититься?
Просто и надежно - не позволять поступать вводу, подконтрольному пользователю в API общения с файловой системой. Если по какой-то причине не получается - валидировать ввод, например по белому списку или добавлять префикс базовой директории и проверять его соответствие после открытия файла, что-то типа такого:

File file = new File(BASE_DIRECTORY, userInput);
if (file.getCanonicalPath().startsWith(BASE_DIRECTORY)) {
    // process file
}

Очень частая тема в CTF, да и на боевых приложениях можно нередко встретить. Главная проблема таких уязвимостей при пентесте и CTF - сложно понять, какие файлы смотреть, чтобы продолжить атаку. Так как с помощью нее мы можем читать только файл, путь которого мы знаем (листить директорию мы не можем через данную уязвимость) в дело вступают всевозможные списки наиболее популярных целей и брутфорс-списки. И даже после этого далеко не факт, что удастся найти что-то "вкусное" для продолжения атаки.

#edu #vuln #web #path_traversal #directory_traversal #traversal #lfr #lfi #rfi

Логотип «Path Traversal» на фоне лесной тропы и солнечных лучей — декоративная иллюстрация к посту про LFR и чтение файлов.
Иллюстрация: логотип Path Traversal на природном фоне.

Дискуссия

Daniil Filippov
Как всегда очень познавательно и интересно !
Присоединиться к обсуждению →

Читайте так же