Здравствуйте! В данной статье хочу вам рассказать как взломали один из моих форумов на движке vbulletin. Сам форум на автомобильную тематику и про конкретную машину, в своем роде Клуб владельцев. Данный домен был куплен 2 года назад и установлен форумный движек vbulletin 3.8.6 с vbseo, который мне очень нравился и позволял добавлять на форум различные фишки в виде галереи, чата и т.п. Я даже видеокурс ранее записал Как создать Перспективный форум с нуля в котором по-шагово на примере показывал весь процесс установки и работы.

За 2 года форум разросся и на данный момент имел посещаемость в районе почти 1000 уников в день, но опять же говорю, что имел, так как после взлома Яндекс среагировал быстро и повесил метку:

Конечно с такой меткой ни один посетитель на сайт уже с поиска не зайдет. Почти такая же метка висела и у поисковика в Гугле, но уже на следующей день ее успешно сняли после того как я удалил вирус и заказал перепроверку в панели Вебмастер Гугла.

Что касается Яндекса, то в панели Вебмастера тоже висело оповещение о вирусе:

Самое интересное, что на вкладке Мои сайты я увидел иконку означающую, что мой форум заражен:

На которую можно кликнуть и посмотреть Вердикт — то есть что за вредоносный код загружен на форуме:

Более подробно удалось увидеть и прочитать ниже в подробном описании:

Итак, предстояло найти этот вирус на форуме и обезвредить.Самому конечно сложно определить и лучше найти профессионала программиста который его и найдет, но я решил попытаться сам. В исходном коде главной страницы я увидел скрипт вызова этого вируса и судя по нему я определил местоположение — это низ форума, так называемый footer.

Поиск вируса в шаблонах vbulletin

Для начала проверяем и ищем в шаблонах самого движка vbulletin. Для этого заходим в админку — Стили и шаблоны — Поиск в шаблонах и далее вводим код данного вируса который удалось просмотреть в исходном коде. В моем случае был код iframe и я его использовал для поиска, но поиск результата не дал.

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

Проверка файлов на вирусы

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

Я рекомендую воспользоваться файловым менеджером типа Тотал Командер или Файлзилла и проверить состояние файлов именно ими. Если вы нашли, что какой то из файлов изменен — то есть дата стоит свежая, то смело его открываем текстовым редактором, желательно Notepad ++ и смотрим есть ли в нем вредоносный код вируса.

В большинстве случаев вирусы поражают файлы index — это главные файлы в директории и поэтому обращать надо внимание на проверку именно их. Так же проверяем файл .htaccess.

Но в моем случае изменений в файлах не было и пришлось просмотреть Базу Данных форума на наличие вируса.

Поиск вируса в Базе Данных

Идем в Мускул на хостинге и смотрим, что там есть — тут уже намного сложнее что то сделать, но я знал что шаблон вывода — это был footer. То есть нам необходима таблица template которая отвечает за вывод шаблонов форума и видим в ней поле title = footer & styleid = 2 — вот там и удалось нам найти данный вредоносный код.

Так как разнообразие вирусов с каждым кодом все больше и больше — то мой опыт нахождения показательный, так как у себя я нашел в Базе данных, а у вас еще не известно где он будет.

Как именно взломали форум vbulletin

Тут вопрос риторический конечно, так как выявить дыру в скрипте и в дальнейшем её залатать необходимы знания программирования, а я ими не владел. Поэтому на поиски дыр и уязвимостей попал на форум vbsupport.org , где и удалось найти «дыру».

Оказывается уязвимость была в плагине vbseo, который я использовал на форуме для ЧПУ — человеку понятные урлы. Данный плагин у меня стоял со дня установки и я его даже не обновлял.

Если вы попали на мой сайт по данной проблеме и у вас стоит этот плагин — то вот заплатка для него.

Открываем: /vbseo/includes/functions_vbseocp_abstract.php
Находим:

public static function proc_deutf($ptxt, $tocharset)
{
$ptxt = preg_replace('#\'([^\']*)(\'\s*\=\>)#mie', '"\'".(($_s = iconv("UTF-8", \''.$tocharset.'\', "$1")) ? $_s : "$1").stripslashes(\'$2\')', $ptxt);
return $ptxt;
}

И заменяем на:

public static function proc_deutf($ptxt, $tocharset)
 {
 $ptxt = preg_replace('#\'([^\']*)(\'\s*\=\>)#mie', '"\'".(($_s = iconv("UTF-8", \''.$tocharset.'\', \'$1\')) ? $_s : \'$1\').stripslashes(\'$2\')', $ptxt);
 return $ptxt;
 }

Как не допустить взлома форума в будущем

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

Обратитесь к профессионалам, которые проведут полный анализ сайта и покажут ошибки в верстки. К примеру, воспользовавшись услугами полиции сайтов http://sitepolice.ru/ , вы получите отчет о найденных ошибках на сайте и рекомендации по их устранению. Так же есть возможность получить конкретные рекомендации по дизайну сайта, юзабилити, сео.

Если у вас есть вопросы или ваш форум vbulletin взломали — то смело задавайте их в комментариях или пишите мне лично.