PHP-Injection
https://t.me/e7teamВсем привет!
Сегодня разберем php-injection.
Введение:
Как мы отмечали ранее в статье https://telegra.ph/OS-Command-Injection-06-25 , php-injection - это одна из разновидностей инъекций кода. C помощью php-injection можно крякнуть сайты, которые "работают на PHP", а на пыхе как мы знаем основаны до 80% всех существующих сайтов. Поэтому сегодня мы рассмотрим данный вид атаки.

Основное:
PHP-Injection выполняется на стороне сервера. Как всегда, причиной данной атаки является входные данные, которые не фильтруются должным образом, но на самом деле причин может быть гораздо больше. Основные причины внедрения кода:
1) Обход проверки входных данных,
2) Внедрение ненадёжных входных данных, где они могут быть расценены как PHP-код,
3) Взлом репозиториев исходного кода,
4) Отключение предупреждений о загрузке сторонних библиотек,
5) Переконфигурация сервера, чтобы он передавал в PHP-интерпретатор файлы, не относящиеся к PHP.
Есть много вариантов php-injection. Потенциально опасными функциями являются:
1) eval()
2) preg_replace()
3) require_once()
4) include_once()
5) include()
6) require()
7) create_function()
Рассмотрим на примере, что из себя представляет php-injection. Для примера будем использовать bwapp.

Открываем bwapp и выбираем PHP Code Injection (рис.1). Перед нами появилась стартовая страница. Используя строку запроса, мы можем вводить произвольный код для обработки, как часть включаемого файла. Для этого в адресной строке перед phpi.php, нам нужно ввести ?message= и например слово hack (рис.1, 2, 3):



На скринах мы видим, что никакой защиты у данного приложения нету (ещё бы, ведь уровень low), поэтому наш произвольный код выполнился (рис.3, 4). По тому же принципу, можно посмотреть версию php данного приложения. Для этого в адресной строке нужно ввести: ?message=hack; phpinfo() (рис.5). Или например имя хоста: ?message=hack; system(hostname) (рис.6).


Еще один из примеров. На рис.7 мы видим скрипт с функцией include, который имеет уязвимость в виде переменной $module к которому достаточно добавить ".php" и можно подключать файл...

Вывод:
Итак, сегодня мы мельком рассмотрели php-injection и наверное глупо говорить, что "данная уязвимость очень опасна!!!" и т.д. На самом деле данная уязвимость, может иметь чудовищные последствия и как многие другие injection, открывает дорогу для проведения других атак. Вариаций php-injection огромное множество (как и везде...) и конечно же есть способы противодействия, например:
1) Фильтрация входных данных
2) Избегать использования опасных функций (exec(), shell_exec(), system(), passthru() и др.)
3) Отключение отображения ошибок
4) Выполнять сканирование кода на наличие ошибок
5) Ну и конечно же WAF
Но всегда помните: KEIN SYSTEM ist SICHER...
Внимание! Информация предоставлена строго в ознакомительно-развлекательных целях. Автор данной статьи, а также ресурс на котором размещена статья, не несут ответственности за любые противоправные действия, совершенные после прочтения данной статьи и применения действий описанных в этой статье.