Зачастую находя в публичном доступе оригинальную тему WordPress рядовой пользователь даже и не задумывается о том, чтобы заглянуть в исходники темы.

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

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

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

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

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

TAC

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

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

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

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

Пример:

print base64_decode(«d3BfY2FjaGUoKTs=»);exit;

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

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

Используем Google и находим, например  http://www.base64decode.org, далее вставляем строку d3BfY2FjaGUoKTs=,

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

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

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

eval(base64_decode(«d3BfY2FjaGUoKTs=»));

на

wp_cache();

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

TAC3

Осталась одна кодированная вставка. Поступаем так же, как и с мелкой вставкой. Лично я меняю 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();

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

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

3 комментария для “Очистка WordPress тем от вредоносного кода

  1. Здравствуйте Вадим!
    У меня серьезные проблемы. Взял я понравившуюся мне тему и начал потихоньку формировать свой блог. И все было бы хорошо, если бы не обнаружилась такая проблема. В тексте записей обнаружил замаскированные ссылки под точки. В редакторе HTML WordPress все нормально. Точки как точки, другими словами ссылки невидимы и удалить их невозможно. При проверке ТАС получаем результат Theme Ok! 6 Static Link(s) Found.. Причем когда я скачивал тему было написано, что 6 ссылок в подвале, это плата за тему. Я в принципе согласен был. что 6 ссылок в подвале это терпимо. Но кроме этих ссылок стали в записях появляться вот эти паразиты вообще на какие-то левые ресурсы. Вирусов нет, сайт в подозрительных не числится. Сам я никак не могу ничего сделать. Писал, где скачал тему, отмалчиваются. Можно ли что то сделать?

    1. Проверьте тему на наличия функция записи в документ или замены текста.

  2. Не используйте премиму-плагины и платные темы, загруженные с торрентов или с неофициальных сайтов. Если вы уже проверили и темы, и плагины, и при этом вредоносный код никуда не пропал, то следующим шагом в ваших поисках станет проверка файлов ядра WordPress.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *