🛡 Защищаем свои ресурсы. Часть 3: Path Traversal
Всем привет 🤗 Продолжаем образовательную рубрику и сегодня поговорим об уязвимости Path Traversal.
Если совсем просто - это ситуация, когда пользователь может читать файлы на сервере, к которым у него не должно быть доступа.
Что такое Path Traversal простыми словами
Path Traversal - это ошибка, при которой приложение доверяет пути к файлу, переданному пользователем.
Пример из жизни: сервис должен отдать картинку, а в итоге по запросу отдаёт любой файл на сервере.
Как это выглядит на практике
Допустим, на сайте есть загрузка изображения: /loadImage?filename=218.png Сервер ожидает имя картинки. Но если он не проверяет входные данные, можно подставить другой путь.
Например:
☄️системный файл
☄️конфигурацию приложения
☄️исходники
☄️ключи и токены
И сервер сам их отдаст.
Где чаще всего возникает Path Traversal
Любое место, где пользователь указывает путь к файлу:
• загрузка изображений • скачивание документов • просмотр логов • аватары и превью • экспорт / импорт файлов
Если путь берётся из запроса и не проверяется строго - появляется риск.
Почему это опасно
Через Path Traversal злоумышленник может:
• читать системные файлы • получить конфигурацию приложения • узнать структуру сервера • достать ключи и пароли • подготовить более серьёзную атаку
Иногда одного такого файла достаточно, чтобы получить полный доступ.
Почему это до сих пор встречается
• разработчики доверяют клиенту • проверки делаются «на глаз» • используются чёрные списки вместо логики • забывают про кодировки и обходы • старый или унаследованный код Как защищаются от Path Traversal
Базовые и обязательные меры:
• использовать белый список допустимых файлов • очищать и нормализовать пользовательский ввод • проверять путь после обработки, а не до • жёстко сравнивать путь с базовой директорией • никогда не доверять имени файла из запроса
❗️****Важно: проверка должна быть логической, а не «по символам».
Вывод
Path Traversal - это не про «взлом сервера». Это про ситуацию, когда приложение само отдаёт лишнее.
Если пользователь может влиять на путь к файлу - это всегда зона повышенного риска.
Такие уязвимости редко находят автоматические сканеры, зато они отлично выявляются ручной проверкой.
Продолжение следует 👉 Часть 4: Command injection