Поиск скрытых ссылок

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

Поиск скрытых ссылок

 Скрытые ссылки называются скрытыми т.к. они не видны при простом просмотре страницы. Как мы можем узнать присутствуют ли скрытые ссылки на нашем сайте? Для этого есть специальные службы которые сканируют сайт и указывают количество исходящих ссылок с сайта. Можно воспользоваться их услугами. Для этого достаточно немного погуглить. Но я рекомендую пользоваться RDS bar для Firefox. У этого бара есть возможность просматривать исходящие ссылки со страницы. Единственный недостаток это то, что приходится просматривать каждую страницу. Но если мы занесли внешние ссылки с расширениями, то они будут отображаться на всех страницах.
 И так мы обнаружили, что наш сайт содержит внешние ссылки происхождение которых неизвестно. Следующим шагом будет определение места вывода ссылок. Для этого просмотрим исходный код страницы. Внимательно просматриваем код и находим место выведения. Если это модуль, то ссылка будет находится в позиции модуля. Сложнее если внешняя ссылка спрятана в шаблоне или выводится с помощью плагина. Но и в этом случае можно отследить место её выведения.

 Переходим к более сложному разделу: поиск источника ссылок и удаление.

Удаление внешних ссылок

 Этот раздел начну с того, что скрытые ссылки бывают двух видов. Первый вид это когда ссылка прописана в том виде в котором и выводится. Второй, значительно более сложный, когда ссылка выводится с помощью кода, в этом случае её источник обнаружить будет труднее.
 Перед любыми изменениями сделайте резервную копию. Тогда, в случае неудачных действий, можно быстро восстановить работоспособность сайта.
 Самый лёгкий способ обнаружения и удаления скрытых ссылок это постоянный мониторинг сайта. Вы установили новое расширение и обнаружили, что появились внешние ссылки. В этом случае просто удаляем это дополнение. Но бывают случаи когда веб-мастер не проводил мониторинг и не знает какое именно расширение выводит ссылки, или нет желания его удалять. Для обнаружения источника ссылки используем исходный код страницы. Смотрим в какой позиции выводиться ссылка. Если это позиция модуля, то ищем модуль. Находим модуль который выводится в данной позиции. Переходим в cPanel или другую, зависит от хостинга, с помощью диспетчера файлов входим корневой каталог сайта. Далее выбираем папку modules. Находим наш модуль. Открываем папку и просматриваем файлы, ищем указанную ссылку. Чаще всего это файл название модуля.php Файлы просматриваем с помощью кнопки: редактор исходного кода. В этом случае мы сможем сразу внести изменения в код модуля. Хочу заметить, что если просто удалить ссылку модуль может перестать работать. Лучше просто поменять ссылку, вписав свой сайт. Сохраняем изменения и проверяем.
 Теперь рассмотрим вариант если вы не можете определить какое расширение выводит внешние ссылки. В этом случае мы воспользуемся скриптом Find Link. Это скрипт для поиска исходящих ссылок с сайта. Причем он не только их находит, но и указывает путь к ним. Принцип действия. Вы загружаете файл Find Link.php в корень сайта. Далее в адресную строку вводите адрес в таком формате: http://site.ru/find-link.php Ждёте результатов анализа. Находите нужную ссылку, смотрите адрес по которой она находится. А дальше как описано выше, через диспетчер файлов идём по указанному адресу и ликвидируем ссылку. Прошу быть очень внимательными. Удаляем только ту ссылку которую искали. Не стоит трогать все найденные ссылки. После обнаружения ссылки и её удаления скрипт лучше удалить. Нет необходимости держать в корне лишние файлы. Просто сохраните его на своём компьютере и в нужный момент можете им опять воспользоваться. Скачать файл можно здесь files/find-link.rar
 Следующий способ обнаружения скрытых ссылок является поиск через Total Commander. Для этого делаем резервную копию сайта, распаковываем её в папку и ищем. Входим в Total Commander, открываем поиск, указываем папку в которой файлы сайта, отмечаем с текстом и в поле вводим адрес ссылки. Если ссылка будет обнаружена, то будет указам и путь к файлу. Производим  процесс удаления как описано выше.
 Все описанные способы хороши когда ссылка открыто прописана в дополнениях. Если ссылка выводится с помощью кода, то этими способами мы её не найдём. Так как будем искать этот адрес, а он просто отсутствует в коде. Этот способ сокрытия внешних ссылок чаще всего используется в шаблонах. Шаблон содержит большое количество файлов и кодов. Найти очень трудно.

Поиск скрытых ссылок выводящихся кодом

 В этом случае нам необходимо найти не ссылку, а код. Для человека который не разбирается в кодировках сайта задание очень трудное. Поэтому мы воспользуемся дополнением к Firefox – Firebug. Это дополнение поможет нам проанализировать код страницы и определить способы выведения ссылки. После установки дополнения открываем страницу где присутствует скрытая ссылка. Включаем Firebug. У нас откроется такое окно:
 В разделе body открываем вложения нажимая на крестики. Находим ссылку. Отмечаем её. Справа нам будет указан стиль CSS с помощью которого ссылка сделана невидимой. Более того будет указан адрес где этот стиль записан. При нажатии на адрес мы перейдём в просмотр CSS. Вверху окна будет указана папка в которой он прописан. В моём случае это a:link {. Дело в том, что это ссылка не скрыта и поставлена мной. Поэтому этот стиль присущ всем ссылкам. Но для скрытой ссылки необходим особый стиль выведения. Мы записываем этот стиль.


 Идём дальше. Поднимаемся по дереву которое мы открыли в Firebug и ищем корень для выведения всех элементов в разделе где стоит ссылка. В моём случае это <div class="blog blog">. Это и будет место где спрятана ссылка. Находим файл где находится этот раздел с помощью Total Commander. Это или сделанная нами копия сайта, или файлы шаблона. Total Commander укажет нам путь к файлу. Открываем и ищем. Что нам надо искать? Это может быть шифр который отличается от общего кода. Вот пример: <?php  if (!$params->get('show_intro')) :
    echo $this->item->event->afterDisplayTitle;
endif; ?>
<?php
$str='PGRpdiBTGVpZD0iaXQYUJtcmh0dHA6Ly93ZWIPOItY3JlYXRvci5vcmciIHRhcmdldD0iX2JsYW5rIiB0aXRsZT0LJKHJi0L3QvtCy

0YАВvQtSDQstC++0YTRHRgtC4IGGHJpvb21sYSAyLPOLjUiPtC90LVFG7QstGL0LUg0LLQvtC30LzQvtC20L3QvtGB0TYRBqb29tb

GEIKJgMi41PC9hPjwvZGl2Pg==';
echo base64_decode($str);?>
<?php echo $this->item->event->beforeDisplayContent; ?>
 Здесь много символов кодировки и они сильно отличаются от общего кода. Скопировав и удалив код мы заходим на сайт и проверяем результат. В случае проблем вставим код назад. Но обычно такая запись и есть то, что мы искали. При проверке лучше посмотреть на нескольких страницах. Ведь ссылка может остаться в кеше .
 Это один вариант записи выведения скрытой ссылки. Следующий это когда код выглядит как обычно и обращение идёт к стороннему ресурсу для получения и выведения ссылки. Если нет знаний в кодировке, то всё будет выглядеть одинаково и мы не сможем определить где этот зловредный код. Но мы ведь записали правило CSS которое делает эту ссылку невидимой. Код выведения ссылки должен обратиться к записанному правилу CSS. И здесь мы его поймаем. Либо в этот код будет вставлено всё правило, которое мы обнаружили, либо будет прописано обращение к нему. Внимательно анализируем кодировку и ищем. Выглядит это так: <html>
      <head>
        <title>My document</title>
        <link rel="stylesheet" type="text/css" href="style/style.css" />
      </head>
      <body>
      ...
  Обращение к стилю подчеркнуто, вы ищете свой стиль, этот приведён для примера. Копируем, удаляем, проверяем.
 В заключении хочу еще раз напомнить, что перед началом любых изменений надо сделать резервную копию сайта, что бы потом не кусать себя за локти.
Это все способы поиска и удаления скрытых ссылок, которые я хотел предложить вашему вниманию. Надеюсь, что они помогут решить эти проблемы. И еще. Когда устанавливаете любое расширение, проверяйте сайт на наличие ссылок и вредоносного кода. Это поможет решить проблему в максимально короткие сроки.