BUTAMUHbI4.ru

| мужские рукоделия |

Найти и обезвредить! Скрытые ссылки в темах WordPress.

24 Апр 2013, 22:14
Просмотров статьи: 7956
Рубрика: Интернет по касательной

Найти и обезвредить!

Найти и обезвредить!

Со скрытыми ссылками в коде шаблонов и тем я сталкивался неоднократно на CSM Joomla. Как выяснилось, в темах CMS WordPress они тоже имеют место быть. В этой статье я расскажу вам историю о моём опыте поиска и удаления скрытых ссылок для следующего моего проекта на WordPress.

Как вы знаете, стройка сайта начинается с поиска подходящей темы (шаблона сайта). Я в этом отношении не исключение. После поисков темы можно смело начинать искать скрытые ссылки. Суть моего поиска скрытых ссылок заключалась в сравнении одной и той же темы, скаченной с двух разных сайтов:

  • wordpressе.ru [1]
  • wp-templatеs.ru [2]

Самое весёлое, что в обоих вариантах данной темы оказались паразитные скрытые ссылки, но разного образца. И именно это и облегчило поиск и удаление скрытых ссылок темы вордпресс.

Для начала я сравнил размеры файлов, и те файлы, которые отличались, скопировал в отдельную папочку и из первой темы, и из второй. Ими оказались: style.css, comments.php, footer.php, header.php, sidebar.php и конечно functions.php. Сравнение проводил в файловом менджере FAR:

Сравнение размера файлов темы WordPress.

Сравнение размера файлов темы WordPress.

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

Файл comments.php [2] содержал следующую строку, которой не было а файле comments.php [1] {в остальном файлы абсолютно идентичны}:

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

Даже не обладая знаниями PHP, не сложно догадаться, что речь в этой строке идёт исключительно о ссылках (функции get_links и return_links, и переменная $links). Берём на заметку эти две функции (позже будем их искоренять из файла functions.php [2]), удаляем строку и идём дальше.

И в footer.php [1], и в footer.php [2] были инъекции, причём в данном случае не очень такие скрытые 😀

Скрытые ссылки в теме WordPress.

[1]: Скрытые ссылки в теме WordPress.

Скрытая ссылка в теме WordPress.

[2]: Скрытая ссылка в теме WordPress.

Хотя, в варианте [2] ссылка не активна. Но я удалил блок <div id=»credits»> везде, сделав ещё один шаг к заветной цели, которую можно назвать «Тема WordPress без скрытых ссылок«!

Следующим файлом для сравнения был header.php. И сразу в варианте [1] я напоролся на вот функцию wp_initialize_the_theme и её вызов:

<?php function wp_initialize_the_theme() { if (!function_exists(«wp_initialize_the_theme_load») || !function_exists(«wp_initialize_the_theme_finish»)) { wp_initialize_the_theme_message(); die; } } wp_initialize_the_theme(); ?>

Берём на заметку функции wp_initialize_the_theme_load, wp_initialize_the_theme_finish и wp_initialize_the_theme_message для дальнейшего их поиска в functions.php [1] и смело удаляем этот код. Других различий нет. Идём дальше.

В файле sidebar.php [1] был вот такой вставыш, выдававший себя за Админ-панель с ссылками якобы на официальный сайт WordPress:

Скрытая ссылка под видом Админ-панели.

Скрытая ссылка под видом Админ-панели.

В действительности же эти нескрытые ссылки ведут на сайт wordpressе.ru. Больше отличий в этих файлах нет.

Теперь самое интересное. Десерт, так сказать. Файл functions.php. Для начала из обоих искореним функции, которые мы с вами брали на заметку выше. Вот они:

functions.php [1]

wp_initialize_the_theme_load wp_initialize_the_theme_finish wp_initialize_the_theme_message

functions.php [2]

get_links
return_links

В файле functions.php [1] по запросу «wp_initialize_the_theme» были найдены следующие блоки кода:

Функция wp_initialize_the_theme_message.

1. Функция wp_initialize_the_theme_message.

Функция wp_initialize_the_theme_finish.

2. Функция wp_initialize_the_theme_finish.

Вызов функция wp_initialize_the_theme_load.

3. Вызов функция wp_initialize_the_theme_load.

Функция wp_initialize_the_theme_load.

4. Функция wp_initialize_the_theme_load.

Строки из блоков 1, 2 и 4 (рисунки выше) убираем полностью, а из 3 удаляем одну строку, содержащую вызов функции «wp_initialize_the_theme_load();».

А ещё обязательно просмотрите файл functions.php на наличие подозрительных хуков (add_action) и фильтров (add_filter). Я обнаружил в файле functions.php [1] следующие гадости, которые цепляли функцию _theme_setup к функции WordPress after_setup_theme:

Эти скрытые ссылки в виде хука тоже надо удалить.

Эти скрытые ссылки в виде хука тоже надо удалить.

Эта мерзость должна была отправлять идентификатор текущей статьи на сайт wрru.ru для дальнейшей её подмены на свою. Удаляем смело весь блок!

В файле functions.php [2] не обнаружено зловредных фильтров и хуков, поэтому просто проводим действия с поиском, но несколько других запросов (напомню: get_links, return_links). После чего находим следующие инъекции, добавляющие скрытые ссылки на сайт wordpress:

Функция получения ссылок.

Функция получения ссылок.

Функция передачи ссылок.

Функция передачи ссылок.

Смело грохаем всё это безобразие, после чего файлы functions.php [1] и functions.php [2] становятся одинакового роста. Простите, размера.

Соответствующие файлы одного размера.

Соответствующие файлы одного размера.

Ещё для защиты вашего блога будет полезным прочитать статью о том, как просто и быстро спрятать логин администратора wordpress.

ПостСкрипы:

  1. После установки обоих вариантов темы wordpress на «живой» хостинг и их прогонки на сервисе по проверке исходящих и внутренних ссылок mainspy.ru/analiz_ssylok_sajta, скрытых ссылок не обнаружено!
  2. Данный способ поиска и удаления скрытых ссылок хорош тем, что он основан на сравнении. И поэтому им смогут воспользоваться даже начинающие веб-люди.
  3. Всё познаётся в сравнении.. 🙂

Метки: , ,



Не жадничайте! Поделитесь с друзьями. :-)

комментариев 8

  1. Серж http://apteka-vdome.ru/ 01.09.2014 (16:15:01)

    Вы правы,я смог справится)
    Прочитал вашу статью еще раз и решил поискать этот шаблон в буржунете,заменил два файла functions.php и comments.php
    и загадоная ссылка пропала)
    Спасибо за статью. 😉

    • BUTAMUHbI4 http://BUTAMUHbI4.ru 01.09.2014 (16:36:43)

      Пожалуйста! Рад, что информация оказалась годной!

  2. Серж http://apteka-vdome.ru 01.09.2014 (14:27:37)

    Помогите избавиться от скрытой ссылки:
    *ссылка*

    в файле comments.php имется строка:
    return_links($lib_path); echo $links;

    однако при удалении сайт идет вразнос.

    ссылка находится на главной странице,если посмотреть ее исходный код.

    в файле function.php есть строчки:
    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;

    • BUTAMUHbI4 http://BUTAMUHbI4.ru 01.09.2014 (16:10:24)

      Здравствуйте, Серж.
      Элементарный анализ главной страницы вашего сайта сервисами pr-cy.ru и mainspy.ru показал отсутствие внешних ссылок, кроме как на флешплеер адоб. Да и тот «запакован» в nofollow. Так что у меня на уме два варианта: либо вы справились с внешней ссылкой в одиночку сразу же после написания данного сообщения, либо тут пахнет жареным.. 😉

  3. Александр http://internetideyka.ru 25.08.2013 (19:05:30)

    Здравствуйте! Во первых, спасибо за статью! Очень подробно все изложено! Еще хотел бы попросить Вас взглянуть на мой сайт. Дело в том, что около двух недель назад на моем сайте появились посторонние ссылки на сайты различной тематики. Увидел я их через исходный код в Chrome и программку SitaMap Generator. только вот найти, где именно эти ссылки располагаются не могу никак! Уже «перерыл» все файлы и на хостинге и шаблон менял и через Total Commander искал — все безрезультатно! Буду благодарен за помощь, конечно же, не безвозмездно!

    • BUTAMUHbI4 http://BUTAMUHbI4.ru 26.08.2013 (21:08:00)

      Добрых суток!
      Для начала дайте одну конкретную страницу вашего сайт, на которой есть скрытые ссылки, и укажите все скрытые паразитные ссылки на этой странице. Также нужен шаблон (название, версия). В идеале нужен исходник шаблона, который вы устанавливали на сайт.

  4. Андрей 25.04.2013 (10:39:42)

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

    • BUTAMUHbI4 http://BUTAMUHbI4.ru 25.04.2013 (20:17:19)

      Всегда рад помочь, Андрей! У нас есть нечто общее: я тоже начинающий wordpress-юзер. И как следствие, думаю, что вам будет немного полезна сегодняшняя моя seo-статья.

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

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

* Проверка на человекоподобность:


Яндекс.Метрика

(C) 2013-2017 BUTAMUHbI4.ru | Мужские рукоделия


При цитировании материалов с данного сайта обязательна активная ссылка на страницу с контентом.

Использование текста, изображений, видео с данного сайта возможно только для ознакомительных целей.

Условия коммерческого использования контента обговариваются с администрацией BUTAMUHbI4.ru путём запроса через форму комментариев соответствующего материала.