У меня есть вирус, который заразил тысячи файлов на одном из серверов моего клиента.
К счастью, я имел дело с большим количеством других вредоносных программ на сервере этого парня, и этот выглядит просто, чтобы сделать простое регулярное выражение (он помещал все свои сайты в одну учетную запись: (но я работаю с ним, чтобы решить это).
В принципе, хотя, в отличие от большинства вредоносных программ, я видел, где он вводит php перед закрытием?> Кода GOOD (что очень сложно определить, какой код кода / плохой), эта текущая вредоносная программа ALWAYS добавляет новый <?php ... malware ... ?>
.
Итак, в основном, скажем, здесь есть хороший код:
<?php require('./wp-blog-header.php'); ?>
Вместо того, чтобы добавлять некоторый вид base64_decode eval сразу после инструкции require, но перед?? (Что может затруднить удаление, когда страница заканчивается в условном / сложном заявлении), это всегда добавит следующий код с NEW <?php ... ?>
так:
<?php require('./wp-blog-header.php'); ?><?php ... malware ...?>
Я не хочу помещать здесь какой-либо вредоносный код, но так всегда запускается вредоносный код:
<?php @error_reporting(0); if (!isset($eva1fYlbakBcVSir)) {$eva1fYlbakBcVSir = "tons and tons of characters";$eva1tYlbakBcVSir = "\x6335\1443\3x6f\1534\x70\170\x65";$SNIPSNIPSNIPSNIP;} ?>
Я хотел бы искать каждый файл для <?php @error_reporting(0); if (!isset
<?php @error_reporting(0); if (!isset
и если это последний оператор PHP на странице, а затем удалить все в пределах
Вот как вы очищаете весь проект с помощью чистого php.
Ни в коем случае я не беру на себя никакой ответственности за любые убытки, включая, но ограничиваясь прямым, косвенным, особым или косвенным ущербом, возникающим в результате или каким-либо образом связанным с использованием предоставленного кода, независимо от того, по гарантии, контракту, деликту или иным образом; независимо от того, был ли нанесен ущерб лицам или имуществу или иным образом; и независимо от того, была ли потеря получена или возникла из-за результатов использования этого кода. ;п
<?php //Enter it as it is and escape any single quotes $find='<?php @error_reporting(0); if (!isset($eva1fYlbakBcVSir)) {$eva1fYlbakBcVSir =\'\';?>'; echo findString('./',$find); function findString($path,$find){ $return=''; ob_start(); if ($handle = opendir($path)) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { if(is_dir($path.'/'.$file)){ $sub=findString($path.'/'.$file,$find); if(isset($sub)){ echo $sub.PHP_EOL; } }else{ $ext=substr(strtolower($file),-3); if($ext=='php'){ $filesource=file_get_contents($path.'/'.$file); $pos = strpos($filesource, $find); if ($pos === false) { continue; } else { //The cleaning bit echo "The string '".htmlentities($find)."' was found in the file '$path/$file and exists at position $pos and has been removed from the source file.<br />"; $clean_source = str_replace($find,'',$filesource); file_put_contents($path.'/'.$file,$clean_source); } }else{ continue; } } } } closedir($handle); } $return = ob_get_contents(); ob_end_clean(); return $return; } ?>
к<?php //Enter it as it is and escape any single quotes $find='<?php @error_reporting(0); if (!isset($eva1fYlbakBcVSir)) {$eva1fYlbakBcVSir =\'\';?>'; echo findString('./',$find); function findString($path,$find){ $return=''; ob_start(); if ($handle = opendir($path)) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { if(is_dir($path.'/'.$file)){ $sub=findString($path.'/'.$file,$find); if(isset($sub)){ echo $sub.PHP_EOL; } }else{ $ext=substr(strtolower($file),-3); if($ext=='php'){ $filesource=file_get_contents($path.'/'.$file); $pos = strpos($filesource, $find); if ($pos === false) { continue; } else { //The cleaning bit echo "The string '".htmlentities($find)."' was found in the file '$path/$file and exists at position $pos and has been removed from the source file.<br />"; $clean_source = str_replace($find,'',$filesource); file_put_contents($path.'/'.$file,$clean_source); } }else{ continue; } } } } closedir($handle); } $return = ob_get_contents(); ob_end_clean(); return $return; } ?>
Удачи.
<?php error_reporting(E_ALL); $find='<\?php @error_reporting\(0\); if \(!isset\((.*?)\?>'; echo findString('./',$find); function findString($path,$find){ $return=''; ob_start(); if ($handle = opendir($path)) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { if(is_dir($path.'/'.$file)){ $sub=findString($path.'/'.$file,$find); if(isset($sub)){ echo $sub.PHP_EOL; } }else{ $ext=substr(strtolower($file),-3); if($ext=='php'){ $filesource=file_get_contents($path.'/'.$file); //The cleaning bit echo "The string '".htmlentities($find)."' was found in the file '$path/$file and has been removed from the source file.<br />"; $clean_source = preg_replace('#'.$find.'#','',$filesource); // $clean_source = str_replace($find,'',$filesource); file_put_contents($path.'/'.$file,$clean_source); }else{ continue; } } } } closedir($handle); } $return = ob_get_contents(); ob_end_clean(); return $return; } ?>
к<?php error_reporting(E_ALL); $find='<\?php @error_reporting\(0\); if \(!isset\((.*?)\?>'; echo findString('./',$find); function findString($path,$find){ $return=''; ob_start(); if ($handle = opendir($path)) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { if(is_dir($path.'/'.$file)){ $sub=findString($path.'/'.$file,$find); if(isset($sub)){ echo $sub.PHP_EOL; } }else{ $ext=substr(strtolower($file),-3); if($ext=='php'){ $filesource=file_get_contents($path.'/'.$file); //The cleaning bit echo "The string '".htmlentities($find)."' was found in the file '$path/$file and has been removed from the source file.<br />"; $clean_source = preg_replace('#'.$find.'#','',$filesource); // $clean_source = str_replace($find,'',$filesource); file_put_contents($path.'/'.$file,$clean_source); }else{ continue; } } } } closedir($handle); } $return = ob_get_contents(); ob_end_clean(); return $return; } ?>
Пока это самый близкий (спасибо mvds)
sed -e "s/<?php @error_reporting.*?>//g" --in-place=_cleaned *
хотя -in-place = _cleaned дает ошибку sed: illegal option -- -