🛡 Защищаем свои ресурсы. Часть 8: Уязвимости при загрузке файлов (File Upload)

Всем привет 👋 Продолжаем образовательную рубрику про уязвимости, которые часто недооценивают. Сегодня разберём одну из самых опасных и при этом самых распространённых ошибок - загрузку файлов.

Если коротко: File Upload - это когда пользователь загружает файл, а приложение слишком ему доверяет.

Что такое уязвимость загрузки файлов

Уязвимости при загрузке файлов возникают, когда веб-приложение позволяет пользователю загрузить файл на сервер, но:

• плохо проверяет расширение • не контролирует тип содержимого • доверяет имени файла • не проверяет путь загрузки • сохраняет файл напрямую в файловую систему

В результате загруженный файл может стать не картинкой, а точкой входа.

Как это выглядит на практике

Частый сценарий: на сайте есть загрузка аватара или документа.

Ожидание: пользователь загружает изображение.

Реальность при ошибке: вместо картинки на сервер попадает исполняемый файл, который можно вызвать напрямую через браузер.

И сервер сам его выполнит.

Типичные ошибки, которые приводят к проблеме На практике уязвимости появляются из-за:

• проверки расширений через чёрный список • доверия Content-Type из запроса • возможности менять имя файла • отсутствия нормализации пути • загрузки файлов в web-доступные каталоги • проверки «до», а не «после» сохранения

Всё это по отдельности кажется мелочью. Вместе - превращается в полноценный доступ.

Что можно получить через File Upload

Через неправильную загрузку файлов злоумышленник может:

• читать файлы на сервере • получать конфигурации приложения • выполнять код • обходить авторизацию • развивать атаку дальше

Очень часто это не финальная точка, а начало цепочки.

Почему такие уязвимости всё ещё встречаются Причины классические:

• «Это же просто аватар» • «Мы проверяем расширение» • «Контент-тайп же картинка» • «Пользователь не догадается» • устаревшие подходы и примеры из интернета

И почти всегда - отсутствие системного подхода.

Как защищаются от уязвимостей загрузки файлов

Базовые и обязательные меры:

• использовать белый список допустимых расширений • игнорировать имя файла от пользователя • переименовывать файлы при сохранении • проверять содержимое файла, а не заголовки • запрещать traversal-последовательности • не сохранять файлы в web-доступные директории • обрабатывать и проверять файл до сохранения

Важно: ни одна проверка по отдельности не спасает. Работает только комбинация.

Вывод

File Upload - это не «про картинки». Это про доверие к данным, которые полностью контролирует пользователь.

Если пользователь может загрузить файл - он уже потенциально влияет на сервер.

Именно поэтому такие уязвимости до сих пор стабильно попадают в топы OWASP.

Продолжение следует 👉 Часть 9: условия гонки

#кибербезопасность #websecurity #pentest #fileupload #appsec #infosec #обучение #безопасность

🛡 Защищаем свои ресурсы. Часть 8: Уязвимости при загрузке файлов (File Upload)
Всем привет 👋
Продолжаем образовательную рубрику про уязвимости, которые часто недооценивают | Сетка — социальная сеть от hh.ru