27th
Янв

Чистим WordPress тему от вредоносного кода.

Автор: admin | Рубрика: Полезное

Нередко находя в паблике очередную тему WordPress рядовой юзер даже и не задумывается о том, чтобы заглянуть в исходники темы. Как результат Ваш блог имеют, как ссылочного донора, спам площадку. Что делать?

1) Для начала установим плагин: TAC (Theme Authenticity Checker)

Плагин покажет нам кол-во внешних ссылок и наличие кодированного php кода. Обычно новичков пугают ужасающие строки base64, но обо всем поподробней.

TAC ‹ Мода и стиль - онлайн-журнал — WordPress_1327646068183

Как видно из скрина, в теме имеется 1 статическая ссылка в footer.php и 2 кодированные вставки.

2) Со статическими ссылками проблем не должно возникнуть. Открываем нужный файл и вырезаем.

TAC

3) С кодированными вставками поступаем так:

Мелкий код: eval(base64_decode("d3BfY2FjaGUoKTs="));

Мелкий код можно раскрыть 2мя путями, для ленивый и для продвинутых.

Ленивый делает так: заменяет функцию eval на print и в конце строки закрывает функцией exit;

Пример:

print base64_decode("d3BfY2FjaGUoKTs=");exit;

Перегружаем страницу блога и смотрим исходники.

TAC 2

Продвинутый путь:

Гуглим: online base64 decoder, находим нужный сайт, вставляем строку d3BfY2FjaGUoKTs=,

получаем результат wp_cache();

В итоге, видим что идет вызов некой функции wp_cache();

Заменяем c строку в исходниках footer.php

eval(base64_decode("d3BfY2FjaGUoKTs="));

на

 wp_cache();

Далее смотрим, что показывает TAC теперь.

TAC3

Осталась 1 кодированная вставка. Поступаем так же, как и с мелкой вставкой. Лично я меняю eval на print.

Результат:

TAC4

Как видно из результата наш кодированный код подвергся кодированию ещё раз. Некоторые “умники” поступают так, пологая, что это отпугнет большинство неопытных юзеров, но ведь это не про нас, верно?

Выход из этой ситуации есть, первый для ленивых, второй для извращенцев.

Путь извращенца:

Меняем eval на print, копирует результат в исходники и так n-нное количество раз. N-нное, потому, что мы не знаем, сколько раз завернули исходники в base64.

Путь ленивого:

Пишем скрипт, который будет “разворачивать” эту ахинею автоматически меняя eval на print.

Исходник:

<?
$text = file_get_contents(‘target.txt’);

for($i=0;$i<=30;$i++){ // Кол-во циклов
  if( $i==0 )
    $step[$i] = $text;

  if(preg_match("#eval\(#iU",$step[$i])){
     $step[$i] = preg_replace("#eval\(#iU","print ", $step[$i]);
     $step[$i] = preg_replace("/\)\;/iU",";", $step[$i]);

     ob_start();
     eval($step[$i]);
     $eval_buffer = ob_get_contents();
     ob_end_clean();

     $step[$i+1] = $eval_buffer;

  } else {
    print $step[$i];
  }
}
?>

Скрип примитивный, единственно что Вам нужно сделать – это скопировать в файл target.txt кусок закодированного кода в base64 и выставить приблизительное кол-во циклов (лично я больше 30 не выставлял)

Прогоняем наш кодированный фрагмент и видим вполне читаемый php код с мелкими вставками.

TAC5

Далее копирую то что получили и вставляю вместо кодированной строки. Привожу в читабельный вид.

Как видно в данном случае был вживлен код на вывод ссылок с буржуйной биржи, либо с какой-то личной сетки, а так же заменены оригинальный вызов функций get_header(); и get_footer(); на wp_get_header(); и wp_get_footer();

Удалив вредоносный код, потребовалось ещё поправить шаблоны на предмет удаление несуществующих функций (те что были закодированны во вшитом коде)

От себя хочу добавить ещё 1 момент, не поленитесь и прогоните по всем файлам программу Folder Find Text (или аналогичную ей), искать нужно текст в файлах, а именно: eval(,system(,exec( – это основные функции которые могут быть использованы против Вашего блога. Я находил вшитый в КАРТИНКУ вредоносный код на php, которые незаметно вводился в общий шаблон, банальным includ-ом. Причем файл картинки не был поврежден.

PS: Если у Вас есть WordPress темы, которые требуют грубой очистки от шлака и Вы не в силах справиться.

Пишите на msg[ГавГав]theredhaired.ru или в комментарии.

Комментарии читателей

  1. Hikki |

    Спасибо за мануал подробный, всё по делу.
    Почту занёс в памятку, т.к. часто нужны шаблоны для WP, соответственно действительно не со всеми внешками сам смогу разобраться ;)

    [Ответить]

    admin Reply:

    Могу помочь только с base64, если кодируют Zend-ом то тут всё, вилы.

    [Ответить]

  2. Елена |

    Вы хотите сказать, что все сайты, поставленные на WordPress, спамеры? И они сами об этом не догадываются?

    [Ответить]

    admin Reply:

    Проблема не в WordPress, проблема в шаблонах к нему :)

    [Ответить]

    admin Reply:

    PS: проверьте Вашу тему плагином TAC

    [Ответить]

  3. Kostya |

    Здравствуйте, а не подскажите как найти в WP вирус, яша пишет что поведенческий анализ, все скрипты вроде перерыл не нашел iframe

    [Ответить]

    admin Reply:

    Для начала необходимо поставить плагин TAC и посмотреть отчет. Если все хорошо и ничего нет, то:

    Скачиваете полностью Ваш сайт на локальный диск и начинаете искать кусок текста “iframe” при помощи программы Folder Find Text.

    [Ответить]

    admin Reply:

    PS: Так же может быть закодирован JavaScript/HTML

    [Ответить]

  4. IAD |

    для комплексного анализа, лучше юзать тяжёлую артилерию: http://uneval.com/ru
    кроме разворачивания eval он найдёт подозрительные сценарии (команды работы с файлами, сокетами, …), чему не место в плагинах или темах. В изложеном подходе нет на это допущения, что вредоносный код будет не зашифрован.

    [Ответить]

    admin Reply:

    Сервис делает почти то же самое, что и написано в статье.

    Попробуй прогнать код:

    < ?php
    $megusta = 'tem'.'('.'dir'.')';
    $newfunc = create_function('$a,$b', 'sys'.$megusta.';');
    echo $newfunc(2, M_E) . "\n";
    ?>

    ЗЫ: для юниксоидов сменить dir к примеру на ls

    Этот код наглядно показывает, что сервис не видит угрозы. Так, что тут конкретных решений нет, кроме, как пробежать глазами + опыт.

    [Ответить]

    IAD Reply:

    Согласен, такое без интерпретации найти сложно. А интерпретация зачастую невозможна, без всей системы в целом.
    Код под обфускатором вообще труба.

    [Ответить]

  5. admin |

    К чему мы пришли.

    Из личного опыта, могу сказать, что:

    1) В подавляющем большинстве если Вы берете тему не из офф. источников, то в ней 99% будут шифрованные вставки.

    2) Можете использовать плагины и сервисы проверок, которые были перечислены в этом топике. В большинстве случаев этого будет достаточно.

    3) Если у Вас остались подозрения и/или вредоносный код появляется вновь. То нужно копать уже глубоко. Возможен доступ через: FTP (дали пароль, пароль был подобран и т.д.), локальный доступ (если кривой хостинг, то такое имеет место быть, т.е. получили доступ к одному сайту, а Вас подломили изнутри), оставленный бекдор (обычно при получении доступа, делают лазейку на будущее). Это основные моменты.

    В целом требуется детальный анализ лог файлов на предмет откуда растут ноги.

    Буквально месяца 2 назад мой сайт подвергся взлому (единственный раз за всю историю :) меня подломили), причиной которого была моя лень. Купив очередной сайт с доменом, на WP. Я не удосужился проверить все и в итоге получил сначала обузу от Hetzner, стал выяснять причину и когда выяснил, что мой сайт попал в список дефейснутых листов и на основании этого Hetzner выкатил обузу.

    Некий Хуанпедроз из солнечной индонезии заюзал паблик уязвимость thumbnail.php – есть такая библиотека для сжатия картинок. Загрузил через неё в папку /wp-content/ файли hacked.html в котором говорилось о пецдатой хацкерской группировки МудакиФромИндонезия.

    В общем я быстро потер это дело, заменил уязвимый thumbnail.php на нормальный, проверил ещё раз все сайты. Проанализировал логи из которых было понятно, что дальше директории /wp-content/ он не пролез.

    Как результат, потрачено время, нервы + не очень понятная абуза от Hetzner оставила свой отпечаток. Выходит они могут в любой момент вырубить мои сервера из за этого по сути ерундового “мега взлома”.

    [Ответить]

  6. admin |

    PS: Кому интересно.

    Вот список его дефейсов: http://www.zone-h.org/archive/notifier=kaMtiEz
    Вот собстна его бложек http://kamtiez.web.id/about в который используя гугл транслатор я ему отписал, дабы поржать. Но он видать не понял и переписка у нас не заладилась.

    Можете потыкать в zone-h.org свои сайты, может висят, а Вы не вкурсе :)

    [Ответить]

  7. superbiz |

    на всех сайтах на вордпресс на своем серваке уже третий день наблйдаю как матерятся браузеры и мой каспер, а именно на 25 блогах находит при открытие в первый раз Trojan.JS.Redirector.ue, второй раз уже нет. Сегодня уже и яндекс вебмастер занес с черный список мои блоги, никто не сталкивался с таким красавцем и как его лечить?

    [Ответить]

  8. admin |

    вышли с блога хотябы 1 тему на msg{ГАВ}theredhaired.ru в зипе. Гляну.

    [Ответить]