Очистка сайтов от вируса-редиректа «js.donatelloflowfirstly.ga»

Дневник разработчика

Вчера заглянул на сайт одного из своих клиентов и увидел что там стили не грузятся. Только html и те не совсем корректно показываются. Зная, что на хостинге у клиента несколько сайтов, зашёл и на второй сайт — увидел что там открывается совсем другой сайт. На втором сайте сработал редирект = перенаправление с одной ссылки на другую — это не к добру. Сразу понял что сайты словили вируса. Написал заказчику на Whatsapp и обрадовал новостями.

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

WordPress — самая популярная CMS

Чаще всего вирусы цепляют сайты, работающие на CMS WordPress. Эта статистика не говорит о том, что Вордпресс плохой. Вовсе нет! Я люблю WordPress. Большинство сайтов в мире работаю на этой замечательной CMS, но раз этот движок популярен, значит его и и взламывают чаще прочих.

Очистка сайтов от вируса-редиректа "js.donatelloflowfirstly.ga"
Статистика самых популярных CMS в России на Январь 2021. Скриншот сделан на странице https://ru.hostadvice.com/marketshare/cms/ru/

Почему сайты на WordPress ловят вирусы

По статистике, большая часть владельцев сайтов на CMS WordPress не ухаживают за сайтами. Это вполне логично, ведь большая часть владельцев — бизнесмены, а не веб-разработчики. Им некогда стучать по клавишам и они не умеют кодить. Есть более важные дела — их бизнес. Печально то, что они часто недооценивают важность поддержания сайтов в актуальном состоянии. Под актуальным состоянием я подразумеваю:

  • Своевременное обновление ядра сайта
  • Обновление тем и плагинов на сайте
  • Чистка мусора на сайте
  • Регулярное резервное копирование файлов сайта и Базы Данных.

Пара слов о кривых плагинах

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

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

Продолжим о сайте, который заражён

Вернёмся к заражённому сайту. У заказчика были заражены сразу два сайта, находящиеся на одном и том же хостинге, на одном аккаунте. Один из сайтов работал под управлением CMS WordPress, а вот второй — разработан на базе самописной CMS. Я был уочень удивлён, когда узнал, что самописаная CMS тоже была заражена и её мне тоже пришлось чистить. Это интересный кейс, потмоу что в сети я инфы по похожим проблемам не нашёл. Пишут только про ситуации с сайтами под WP.

Лечение сайта на WordPress

Первый сайт работал на базе WordPress. Там вирус проявлял себя во всей красе. Ну это и не удивительно. Судя по данным, которые я собрал по рунету, этот злодей был разработан на базе одной известной уязвимости Вордпресса.

Что я делал в подобных ситуациях ранее

Обычно я всегда писал знакомому программисту Михаилу и просил почистить. Он иногда делился деталями своих изысканий и мы их обсуждали, мусоля тему дальнейшего пресечения подобных казусов. Именно от Мишки я узнал, что чаще всего вирус-редирект поражает статьи, отзывы. комментарии и т п. В WordPress это называется тип записи «Post».

Что я предпринял в этот раз

В этот раз я решил сделать всё сам. Во первых были выходные и Мишка ни чем не помог. А во вторых мне стало интересно получится или нет. Вот и попробовал почистить ручками. Ко всему прочему, один из сайтов был на WordPress — это вдвойне инетесно и полезно для меня.

Что из этого получилось — читайте ниже. Будет много деталей и описание процесса лечения сайта после заражения. Так же дам несколько рекомендаций по устранению уязвимостей на вашем сайте.

Для начала давайте внесем ясность в этапы моей работы. Сайт работающий под управлением CMS WordPress далее буду называть сайт №1, а сайт на самописной CMS будет Сайт №2.

Лечение сайта под управлением CMS WordPress

Чистка Базы данных

Начал работу с сайта №1. Причем весьма не стандартным способом — я не стал гуглить вирус по его признакам. или искать информацию по плагинам — антивирусникам. Вместо этого залез в базу данных сайта и вразу же нырнул в файл под названием wp_options. В параметрах сразу заметил аномалию — долбанный адрес сайта не соответствовал домену! Это было то что нужно!

Очистка сайтов от вируса-редиректа "js.donatelloflowfirstly.ga"
Вирус изменил базовый URl сайта и адрес домашней страницы.

Отсюда я получил информацию для поиска повторяющегося фрагмента кода по всем файлам сайта и в БД. Стал искать фразочки по базе Данных, но не через PHP MyAdmin, а через текстовый редактор. Как я это делаю:

  1. Экспортируете базу данных;
  2. открываете её в текстовом редакторе. (я делаю это в Visual Studio Code — это мой фаворит в последние два года);
  3. используя поиск и замену чищу данные.

По поводу рабоыт с Базами данных я не спец, но практика показала, что если чистить аккуратно и не удалять ничего лишнего — пациент выживет и будет работать как раньше. Так что адреса удаляем, а разные скобочки и кавычки — не трогаем! А то сломается наша база данных, а вместе с ней и сайт упадёт. Они ведь связаны (я — КЭП).

Очистка сайтов от вируса-редиректа "js.donatelloflowfirstly.ga"
Вкладки экспорта и импорта файлов Базы данных в PHP MyAdmin.

Во время чистки базы данных я заметил, что фрагменты кода в поле siteurl и home были разные, но у них была повторяющаяся часть — решил её скопировать и проверить, есть ли упоминания дальше по базе. И я нашёл! Там куева гора повторов. И по боьшей части все эти повторы поселились в дампах:

  • Дамп данных таблицы `wp_posts`
  • Дамп данных таблицы `wp_posts_old`

Больше у меня в базе сюрпризов не было. Но это не значит что у вас будет также. Проверьте через поиск и замену все все дампы. Оно может жить в самых неожиданных коридорах ваших данных. Важно искоренить все упоминания этого фрагмента «travelfornamewalking.ga».

Как правильно чистить повторы:

  1. Учитывайте вложенность — если видите что это javascript, как это было у меня — выделяйте открывающий и закрывающий теги!
  2. В найденном блоке js-кода вы выделяете полный фрагмент и вставляете его в поле поиска по БД вместо «travelfornamewalking.ga», что бы разом найти все идентичные блоки кода и избавиться от них через поиск и замену.
  3. Снова вставляем «travelfornamewalking.ga» в поле поиска и найдя совпадения, выделяем весь блок кода и повторяем действия по поиску и замены целого блока.
Очистка сайтов от вируса-редиректа "js.donatelloflowfirstly.ga"
Скрипт нужно выделять полностью. Начиная с от закрывающего тега и до закрывающего включительно! Остальное не трогайте, что бы не повредить базу данных.

После того как почистили Базу данных сайта:

  1. сохраняем её в отдельную копию (ни в коем случае не затираем оригинальную версию с исходниками на случай аврала);
  2. загружаем на хостинг — идем в кабинет хостинга, откуда её скачивали и заливаем файлы — импортируем.

Работа с файлами сайта

Отлично! Мы выполнили половину задачи по чистке сайта от вирусов. Теперь дело за малым — очистка файлов сайта. Тут у нас алгоритм действий следующий:

  1. выгрузить все файлы сайта на комп;
  2. проверить файлы сайта на аналогичные фрагменты кода, найденные в БД;
  3. Загрузить файлы обратно на сайт, заменив ими старые версии (важно сохранить все исходные файлы в архиве на случай если что то сломаем).

Так и сделал — на хостинге запаковал (заархивировал) файлы сайта №1 и быстренько скачал на свой компьютер.

Потом распаковал в отдельную папочку и открыл всю эту красоту в своём любимом редакторе кода.

По итогу я нашёл очень много интересного.

Обновление движка сайта и всех плагинов

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

Потом я в обязательном порядке изменил:

  1. пароли от аккаунта на хостинге,
  2. пароли к базам данных сайта,
  3. логин и пароль для доступа к панелям управления сайтами.

Проверка плагинов на незнакомые названия

Когда обновлял плагины, заметил два странных названия в списке. Это были плагины с вирусом. которые, как я предполагаю, отвечали за вставку скриптов для редиректа во все живые записи на сайте. Под живыми записями подразумеваю текстовые посты. отзывы. коменты и т п.

Ну я конечно же убил эти плагины, оставив на память их названия:

  • 111
  • zzz

Плохо замоскировались. гаврики ))) Это их и сгубило.

Юрий Ронин