Веб-серверы размещают файлы (веб-страницы, изображения, видео, формы и т. д.), из которых состоит ваше веб-приложение, и обслуживают эти файлы, когда кто-то посещает ваш веб-сайт. Некоторые серверы более продвинуты и также контролируют, какой доступ имеют посетители сети. Они могут ограничивать доступ обычных посетителей к учетным записям других пользователей или административным панелям. Хотя веб-серверы эффективны в том, что они делают, и делают это довольно безопасно, злоумышленники могут использовать ошибки, возникающие из-за человеческого фактора или ошибочной логики в том, как сервер обслуживает файлы, которые он размещает.
Что такое LFI-атака?
Атака Local File Intrusion (LFI) происходит, когда злоумышленники используют уязвимости в том, как веб-сервер хранит, обслуживает, проверяет или контролирует доступ к своим файлам. Эта уязвимость характерна для веб-сайтов на основе PHP.
В отличие от многих форм кибератак, когда злоумышленники полагаются на вредоносное ПО для повреждения приложения, злоумышленники в LFI в основном полагаются на хитрые приемы и короткие строки кода. Для этого редко требуются сложные инструменты или сложные сценарии; атаки обычно происходят в веб-браузере. Наиболее распространенный трюк, который используют злоумышленники, — это изменение строки URL с кодом, путями к файлам или именами файлов.
Как происходят LFI-атаки?
Атаки LFI обычно происходят в четыре этапа.
Во-первых, злоумышленник идентифицирует веб-сайт PHP, на котором запущено уязвимое веб-приложение, обычно запуская базовый код в URL-адресе браузера, чтобы проверить, обрабатывает ли веб-приложение (то есть сайт) команду. Думайте об этом как о нажатии комбинации клавиш на игровом контроллере, чтобы разблокировать пасхальное яйцо — скажем, например, о нажатии клавиши «вниз», чтобы войти в туннели в Super Mario. Но команды, которые злоумышленники запускают в атаках LFI, более последовательны, чем проверка каждого туннеля в Super Mario.
Веб-приложение или сервер, которые были неправильно настроены или не могут проверить входные данные, будут выполнять вредоносный код. Отсюда хакер может получить доступ и привилегии, необходимые для чтения уязвимых файлов или загрузки вредоносных файлов на сервер.
Большинство атак LFI приводят к тому, что злоумышленник получает доступ к конфиденциальной информации. Возможность загрузки вредоносного ПО редко бывает успешной, поскольку нет гарантии, что веб-приложение сохранит файл на том же сервере, где существует уязвимость LFI. Это часто бывает, если веб-приложение находится в многосерверной среде.
Таким образом, если уязвимость LFI существует на сервере, на котором размещены изображения, но не на сервере, на котором хранятся данные сотрудников учетные данные или пароли пользователей, злоумышленник будет иметь доступ только к файлам изображений на этом уязвимом сервере. Несмотря на это, такие киберсобытия, как атака на LastPass показывают, что хакеры могут нанести ущерб, казалось бы, с самым незначительным уровнем доступа.
Как предотвратить LFI-атаки
Атаки LFI довольно распространены, согласно Открытый проект безопасности веб-приложений (ОВАСП). Понятно, что хакеры предпочли бы эту атаку, поскольку, как W3Techs отчеты, почти восемь из десяти веб-сайтов используют PHP в качестве языка программирования на стороне сервера — так сказать, множество жертв. Можно предотвратить атаку LFI, приняв передовые методы веб-безопасности.
Белый список файлов общедоступных серверов
Веб-приложения часто используют пути к файлам в качестве входных URL-адресов. Хакеры могут использовать эту файловую систему, изменив часть URL-адреса, которая удваивается как путь к файлу. Например, злоумышленник может изменить https://dummywebsite.com/?module=contact.php к https://dummywebsite.com/?module=/etc/passwd. Уязвимый сервер с плохой фильтрацией и ошибочной логикой будет отображать содержимое файла, хранящегося в пути /etc/passwd.
Конечно, хакеры используют вариации распространенных имен файлов и комбинации символов запроса, чтобы увеличить шансы на успешную атаку. Цель состоит в том, чтобы заставить веб-приложение запустить сценарий или отобразить файлы на веб-сервере.
Вы можете заблокировать эту уязвимость, создав белый список общедоступных документов на своем сервере и указав веб-приложению игнорировать запросы для любого другого документа или пути к файлу. Таким образом, если злоумышленник попытается манипулировать URL-адресом для запроса или запуска кода, запрашивающего приват, вместо этого он получит страницу с ошибкой.
Часто тестируйте на наличие уязвимостей
Вы можете использовать инструменты веб-сканирования для поиска и устранения уязвимостей, которые могут подвергнуть вас атакам LFI. Сканеры веб-приложений — это автоматизированные инструменты, которые сканируют ваше приложение, как злоумышленник, и предупреждают вас о потенциальных уязвимостях. Существует несколько веб-сканеров с открытым исходным кодом, таких как OpenVAS и Wireshark, но большинство сканеров уязвимостей являются проприетарным программным обеспечением и требуют платных планов для использования.
Но, конечно же, вы не получаете веб-сканер только для атак LFI. Эти инструменты также ищут более широкие уязвимости безопасности, такие как удаленное включение файлов, межсайтовый скриптинг, SQL-инъекция и плохая конфигурация сервера. Значит, они того стоят.
Ограничение прав посетителей сайта
Хакеры часто успешно проводят атаки LFI, потому что веб-приложения не могут разделить привилегии пользователей и при этом позволяют посетителям получать доступ к файлам, которые должны быть видны только администраторам. Эта мера работает как белый список: настройте свое веб-приложение и сервер так, чтобы они обслуживали общедоступные файлы и игнорировали несанкционированные запросы, когда посетитель взаимодействует с веб-приложением. Это особенно важно для запросов к путям к файлам, содержащим конфиденциальные файлы.
Для этого вам может потребоваться запретить прямое изменение путей к файлам. Веб-приложение должно обслуживать документы только из жестко заданного списка путей. Кроме того, настройте веб-приложение для обработки запросов с динамической конкатенацией путей (URL-адреса должны содержать буквенно-цифровые символы) вместо функций base64 или bin2hex.
Если вы думаете о добавлении имен файлов в черный список, не делайте этого. У хакеров обычно есть растущий список имен файлов, которые они могут использовать для выполнения атаки LFI. Кроме того, это практически невозможно (и колоссальная трата времени) занести в черный список постоянно увеличивающийся список источников нападения.
Используйте многосерверную среду
Многосерверная среда позволяет изолировать важные, конфиденциальные документы от общедоступных файлов, тем самым снижая риск в случае взлома. Выделенные серверы менее уязвимы для атак LFI, потому что, хотя они работают вместе, их конфигурации различаются.
Помимо этой безопасности, несколько серверов также надежны (с меньшим риском простоя), быстры и эффективны. Следует признать, что использование многосерверной среды нерентабельно, если ваш веб-сайт небольшой. В этом случае рассмотрите возможность разделения доступа вашего веб-приложения к данным между базой данных для личных данных и сервером для общедоступных файлов.
Стоит ли беспокоиться об атаках LFI?
Существует вероятность атаки LFI, особенно если ваш сайт работает на PHP, но вы можете уменьшить уязвимость, настроив веб-приложения и серверы в соответствии с передовыми методами веб-безопасности.
Кроме того, вам следует рассмотреть возможность проведения рутинных проверок безопасности для поиска уязвимостей. Все время что-то ломается, особенно когда архитектура сайта становится сложной. Инструменты, которые вам понадобятся, чтобы защитить себя, автоматизированы, и многие из них не требуют сложной настройки или передовых технических ноу-хау.