几天前,我发现我被所有 index.php 文件, config.php 和 wp中的恶意脚本入侵了-config.php
我尝试获取代码并对其进行修改以查找包含此脚本的文件夹中的文件并自动将其删除。
不幸的是我没有成功。
代码开头如下:
<?php $J24fj = 'bH1Vrb2sswS7fUn8HyCx.... AND MUCH MORE ?>
此代码始终在变化,但内部有一个常量:此文本:ZXZhbChiYXNlNjRfZGVjb2RlKCJaW
我找到了这段代码,如何更改它以搜索常量并删除整行<?php ******* ?>
<?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;
}
?>
提前致谢
安东尼奥
答案 0 :(得分:0)
好像
preg_replace(&#39; /(\&lt; \?php。+?)(ZXZhbChiYXNlNjRfZGVjb2RlKCJaWZXZhbChiYXNlNjRfZGVjb2RlKCJaW)(。+?\?&gt;)/&#39;&#39;&#39;,$ filesource) ;
如果开放和关闭的php标签是自包含的,那么应该可以做到这一点,即不要包含你想保留的任何代码。
请注意,preg_replace可以在不将文件的内容复制到变量中,然后将新字符串复制到$ cleansource变量中。
另外,在输出一个字符串表示代码已被替换之前,您应该小心进行的更改!