Взлом веб-приложений, часть 11: локальное включение файлов (LFI)

  • Автор темы Автор темы LeSh1y777
  • Дата начала Дата начала

LeSh1y777

Пользователь
Регистрация
25/9/25
Сообщения
5,682
Репутация
49
Лайки
153
Депозит
-8.95$
Добро пожаловать обратно, мои начинающие кибервоины!

В этой серии «Взлом веб-приложений» мы рассмотрим множество способов, которыми злоумышленник может взломать веб-приложения. В этом руководстве мы рассмотрим использование локального включения файлов (LFI).

Многие языки программирования, используемые в веб-приложениях, поддерживают функцию include() . Это позволяет разработчику легко размещать повторно используемый код в отдельных файлах и затем вызывать эти файлы при необходимости. Код будет выполняться и интерпретироваться так же, как если бы он был вставлен в приложение в месте включения. Такая возможность есть во многих языках программирования, включая PHP, JSP, ASP и другие.

Ниже приведен пример PHP-кода, уязвимого к LFI.

6a4a49_8ec18b860cbf4a69986da01892a346e2~mv2.png


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

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

Давайте посмотрим, как это работает на примере Damn Vulnerable Web App (DVWA), встроенного в Metasploitable 2.

Шаг 1. Настройка LFI в DVWA

Для начала убедитесь, что уровень безопасности DVWA установлен на НИЗКИЙ. Затем перейдите на вкладку «Включение файлов» слева.

6a4a49_365e524a678c4aa18a325f81b4e67fa3~mv2.png


Обратите внимание, что DVWA указывает: « Чтобы включить файл, отредактируйте ?page=index.php в URL-адресе… ». Прежде чем это сделать, давайте взглянем на исходный код, который позволяет включить файл. Его можно просмотреть, перейдя по ссылке:

<IP>/dvwa/vulnerabilities/view_source.php?id=fi&security=low

Откроется экран, подобный показанному ниже.

6a4a49_4b1b2177bae44318bf8f9b90f2150242~mv2.png


Обратите внимание, что исходный код просто обращается к файлу, указанному после $file. Приложение НЕ обеспечивает проверку входных данных.

Когда он нажал кнопку сравнения, мы увидели, что коды со средним и высоким уровнем безопасности используют проверку входных данных. Исходный код с высоким уровнем безопасности очень специфичен и разрешает только файлы, содержащие «include.php». Другие варианты включают добавление в белый список допустимых файлов, расширений файлов или исключение разделителей каталогов, таких как «/».

6a4a49_5bbdcceeb22340f093eaf7b104060c42~mv2.png


Шаг №2: LFI для /etc/passwd

Попробуем получить доступ к известному файлу /etc/passwd на сервере Linux . Хотя этот файл не содержит паролей (они находятся в /etc/shadow), он покажет все учётные записи пользователей на сервере.

Просто введите /etc/passwd после page= в URL-адресе.

6a4a49_07453890df9746bda755439cbb476ac4~mv2.png


Как вы можете видеть, приложение отобразило содержимое файла /etc/passwd в верхней части страницы DVWA в вашем браузере.

Аналогичная попытка доступа к файлу /etc/shadow приводит к сообщению «Отказано в доступе», поскольку у нас нет прав root для доступа к нему.

6a4a49_cd354b6208fa42ac87cf16aeed6c8cca~mv2.png


Шаг №3: LFI для файлов конфигурации

С другой стороны, мы можем получить доступ к другим файлам в системе, для которых не требуется root-доступ. Например, мы можем прочитать apache2.conf или другие файлы конфигурации на сервере.

Попробуйте ввести местоположение файла apache2.conf (/etc/apache2/apache2.conf) в URL после page=.

6a4a49_a542bba846a24380b1485881733544c8~mv2.png


Как видите, мы можем отобразить все содержимое apache2.conf с сервера в нашем браузере.

Шаг №4: LFI для конфиденциальных файлов

Наконец, мы можем найти и прочитать файлы, к которым нам действительно не следует иметь доступа. Мы можем исследовать сервер в поисках важных или конфиденциальных файлов.

Здесь мы нашли конфиденциальный файл с соответствующим названием «конфиденциальный» в каталоге /home/msfadmin.

6a4a49_2a4596dc86694acb98b24a1ccba06cae~mv2.png


Как вы можете видеть выше, мы смогли отобразить в нашем браузере содержимое этого конфиденциального файла на основном сервере, тем самым сведя на нет попытку автора сохранить конфиденциальность этого файла.

Заключение

Функция локального включения файлов (LFI) позволяет злоумышленнику отображать на базовом сервере файлы, которые должны быть недоступны для него. Это связано с тем, что многие языки программирования (в данном случае PHP) позволяют разработчику использовать включения для повторного использования файлов кода для удобства и простоты. Без адекватной проверки и очистки входных данных злоумышленник может отображать в своем браузере содержимое файлов на сервере, которые иначе были бы недоступны.
 
Назад
Сверху Снизу