TheREDHaired.Ru
Sape, SEO, Траф , Чистим WordPress тему от вредоносного кода.
27th
Янв
Чистим WordPress тему от вредоносного кода.
Автор: admin | Рубрика: Полезное
Нередко находя в паблике очередную тему WordPress рядовой юзер даже и не задумывается о том, чтобы заглянуть в исходники темы. Как результат Ваш блог имеют, как ссылочного донора, спам площадку. Что делать?
1) Для начала установим плагин: TAC (Theme Authenticity Checker)
Плагин покажет нам кол-во внешних ссылок и наличие кодированного php кода. Обычно новичков пугают ужасающие строки base64, но обо всем поподробней.
Как видно из скрина, в теме имеется 1 статическая ссылка в footer.php и 2 кодированные вставки.
2) Со статическими ссылками проблем не должно возникнуть. Открываем нужный файл и вырезаем.
3) С кодированными вставками поступаем так:
Мелкий код: eval(base64_decode("d3BfY2FjaGUoKTs="));
Мелкий код можно раскрыть 2мя путями, для ленивый и для продвинутых.
Ленивый делает так: заменяет функцию eval на print и в конце строки закрывает функцией exit;
Пример:
print base64_decode("d3BfY2FjaGUoKTs=");exit;
Перегружаем страницу блога и смотрим исходники.
Продвинутый путь:
Гуглим: online base64 decoder, находим нужный сайт, вставляем строку d3BfY2FjaGUoKTs=,
получаем результат wp_cache();
В итоге, видим что идет вызов некой функции wp_cache();
Заменяем c строку в исходниках footer.php
eval(base64_decode("d3BfY2FjaGUoKTs="));
на
wp_cache();
Далее смотрим, что показывает TAC теперь.
Осталась 1 кодированная вставка. Поступаем так же, как и с мелкой вставкой. Лично я меняю eval на print.
Результат:
Как видно из результата наш кодированный код подвергся кодированию ещё раз. Некоторые “умники” поступают так, пологая, что это отпугнет большинство неопытных юзеров, но ведь это не про нас, верно?
Выход из этой ситуации есть, первый для ленивых, второй для извращенцев.
Путь извращенца:
Меняем 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 код с мелкими вставками.
Далее копирую то что получили и вставляю вместо кодированной строки. Привожу в читабельный вид.
Как видно в данном случае был вживлен код на вывод ссылок с буржуйной биржи, либо с какой-то личной сетки, а так же заменены оригинальный вызов функций get_header(); и get_footer(); на wp_get_header(); и wp_get_footer();
Удалив вредоносный код, потребовалось ещё поправить шаблоны на предмет удаление несуществующих функций (те что были закодированны во вшитом коде)
От себя хочу добавить ещё 1 момент, не поленитесь и прогоните по всем файлам программу Folder Find Text (или аналогичную ей), искать нужно текст в файлах, а именно: eval(,system(,exec( – это основные функции которые могут быть использованы против Вашего блога. Я находил вшитый в КАРТИНКУ вредоносный код на php, которые незаметно вводился в общий шаблон, банальным includ-ом. Причем файл картинки не был поврежден.
PS: Если у Вас есть WordPress темы, которые требуют грубой очистки от шлака и Вы не в силах справиться.
Пишите на msg[ГавГав]theredhaired.ru или в комментарии.
