删除<;?php***?>;包含特定文本的行

删除<;?php***?>;包含特定文本的行,php,malware,Php,Malware,几天前,我发现我被一个恶意脚本入侵,该脚本已在所有index.php文件config.php和wp-config.php中传播 我试图获取一个代码并对其进行修改,以便在包含此脚本的文件夹中查找文件并自动删除它 不幸的是,我没有成功 代码是这样开始的: <?php $J24fj = 'bH1Vrb2sswS7fUn8HyCx.... AND MUCH MORE ?> 提前谢谢 安东尼奥 preg_replace(“/(\)/”,$filesource) 如果开始和结束的php标记是

几天前,我发现我被一个恶意脚本入侵,该脚本已在所有index.php文件config.php和wp-config.php中传播

我试图获取一个代码并对其进行修改,以便在包含此脚本的文件夹中查找文件并自动删除它

不幸的是,我没有成功

代码是这样开始的:

<?php  $J24fj = 'bH1Vrb2sswS7fUn8HyCx.... AND MUCH MORE ?>
提前谢谢

安东尼奥

preg_replace(“/(\)/”,$filesource)

如果开始和结束的php标记是自包含的,也就是说,不包含任何您希望保留的代码,那么应该这样做

请注意,preg_replace不会将文件内容复制到变量中,然后将新字符串复制到$cleansource变量中


此外,在输出表示代码已被替换的字符串之前,应该小心进行更改

因此,您在代码中发现了恶意内容。你不是想办法保护你的文件,而是想继续删除它?首先,你应该知道你的文件是如何被感染的,因为如果你删除这些行,这些文件可能会再次被感染。第二,你可能只需要备份你的数据库,并进行wordpress的干净安装,它会更快,而且可能更干净,降低仍然被“感染”的风险(即使是轻微的),我正在努力限制损害。但与此同时,我正试图删除散布在服务器中数百个文件中的恶意代码。我的服务器上有100多个站点:-(感谢您的回复。但当我运行脚本时,脚本将删除所有内容。替代方法是仅删除贯穿所有文件的常量字符串,然后不删除它们,而是将每个文件放入一个数组中。然后在任意一侧添加单独的标记,以捕获越来越多的违规行)直到从开始标记获得整个字符串。有关如何检查preg_match_all()数组的示例,请参阅。
<?php 
$find='ZXZhbChiYXNlNjRfZGVjb2RlKCJaW';

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;
}
?>