Как вылечить взломанный сайт на WordPress: пошагово

Чиста світла смуга, витерта на запиленій поверхні, поруч біла серветка

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

Шаг 0. Зафиксировать состояние

До того, как что-то удалять, сделайте полную копию: файлы и база. Да, заражённую.

Она нужна по двум причинам. Если во время чистки сломается что-то нужное, будет куда вернуться. И именно по этой копии потом видно, куда зашли и что успели сделать.

Шаг 1. Понять, что именно случилось

  • Спам в выдаче - в Google на вашем домене чужие страницы. Классический вариант japanese keyword hack.
  • Редирект посетителей - сайт перебрасывает людей на сторонний ресурс, часто только с мобильных.
  • Дефейс - вместо главной чужая страница. Заметно сразу, лечится проще всего.
  • Рассылка спама - хостинг блокирует почту, домен попадает в чёрные списки.
  • Скрытый майнер или бэкдор - сайт вроде работает, но нагрузка выросла.

Полезные места: Search Console в разделе Проблемы безопасности, логи доступа на хостинге и даты изменения файлов.

Шаг 2. Закрыть вход

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

  1. Сменить пароли: все администраторы WordPress, панель хостинга, FTP и SFTP, пользователь базы.
  2. Обновить ключи безопасности в wp-config.php. Это разлогинит всех, включая того, кто сейчас сидит в вашей админке.
  3. Удалить неизвестных пользователей в WordPress.
  4. Проверить владельцев ресурса в Search Console и убрать чужих.

Шаг 3. Заменить то, что можно заменить

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

  • Ядро WordPress: переустановить ту же версию поверх.
  • Плагины: удалить и поставить заново из каталога. Те, что больше не обновляются, - заменить.
  • Тему: стандартную переустановить, кастомную придётся смотреть руками.

Шаг 4. Вычистить то, что заменить нельзя

  • wp-content/uploads - файлов .php здесь быть не должно;
  • .htaccess в корне и во вложенных папках - дописанные правила редиректа;
  • wp-config.php и index.php - сторонние строки в начале файла;
  • файлы активной темы, особенно functions.php и header.php;
  • в базе: таблица настроек, содержимое записей, запланированные задачи.

Маркеры в коде: eval(, base64_decode(, gzinflate(, длинные нечитаемые строки, код сразу после открывающего тега без единого комментария.

О запланированных задачах. Любимый способ вернуться: в WordPress создаётся задача, которая раз в несколько часов восстанавливает удалённые файлы. Вы чистите сайт вечером, а утром всё на месте. Если заражение возвращается именно так - искать надо в задачах и в базе.

Шаг 5. Убрать последствия в поиске

  1. Спамные адреса должны отдавать 410, а не 404 и не редирект на главную.
  2. Удалить чужую карту сайта, подать свою.
  3. В Search Console подать заявку на проверку с описанием выполненных работ.
  4. Через неделю проверить site:вашсайт.com ещё раз.

Когда лучше не делать самому

  • Заражение возвращается после чистки - значит, найдено не всё.
  • Сайт коммерческий и простой стоит денег каждый день.
  • На сервере несколько сайтов: заражение между ними переползает.
  • Google уже показывает предупреждение посетителям.
  • Нет бэкапа и нет уверенности, что именно изменилось.

Коротко

Сначала копия, потом диагноз, потом закрытие доступа, и лишь затем чистка. Ядро, плагины и темы переустанавливаются, а не лечатся. В конце - 410 для спамных адресов и заявка в Search Console.

Нужна помощь со взломанным сайтом?

Проверяю, чищу и закрываю уязвимость, через которую зашли.

Написать