Слой 1. Подменённые настройки
Самое заметное было в базе данных, в таблице wp_options:
- адрес сайта (
siteurlиhome) заменён на чужой домен — отсюда редирект всего сайта и админки; - название сайта заменено на «hacked by …»;
- язык сайта сброшен, а иконка сайта удалена.
Если у вас такая же картина, адрес можно вернуть без админки — через phpMyAdmin или строками в wp-config.php:
define('WP_HOME', 'https://ваш-сайт.ru');
define('WP_SITEURL', 'https://ваш-сайт.ru');
Но это только первый шаг. Если не найти причину, адрес подменят снова.
Слой 2. Бэкдор, который перехватывал пароли
Сверка ядра с контрольными суммами WordPress показала изменённый wp-includes/plugin.php и посторонний файл в папке библиотеки запросов. Дата файла снова была подделана на 2020 год.
Кроме ядра, оказались заражены файлы одного плагина ленивой загрузки изображений — его переустановили с wordpress.org.
Слой 3. Скрипты и скрытые ссылки в контенте
- в текст страниц были вставлены внешние JavaScript-загрузчики, в том числе подгружающий код из блокчейна — такой код нельзя удалить «на стороне злоумышленника», его можно только вычистить со своего сайта;
- в конец страниц добавлены блоки со ссылками на казино, сдвинутые за пределы экрана: посетитель их не видит, а поисковик видит;
- такие же блоки были спрятаны в HTML-виджетах внутри данных Elementor — простая чистка текста страницы их не убирает;
- в пользовательском CSS была скрыта строка одного из чужих администраторов в списке пользователей.
Слой 4. Мусор в базе
130 чужих администраторов, 3 634 спам-записи и ревизии, 73 спам-рубрики и больше тысячи спам-комментариев. Всё это удалили после согласования с владельцем.
Как закрыли сайт от повторного взлома
- Восстановили ядро WordPress из официального источника и обновили его до актуальной версии, обновили Elementor и бесплатные плагины, удалили неактивные.
- Сменили секретные ключи и пароль администратора — все сессии и украденные cookies стали недействительны.
- Закрепили адрес сайта в
wp-config.phpи запретили менять ключевые настройки из базы: адрес, название, почту администратора, роль новых пользователей, тему и список плагинов. - Запретили создавать пользователей и повышать роли, вход в админку разрешили только настоящему администратору, добавили блокировку после 5 ошибок входа.
- Закрыли пакетный REST для анонимов, XML-RPC, список пользователей и комментарии.
- Включили ежедневную проверку: сверка ядра и плагинов, поиск PHP в uploads, контроль администраторов — с письмом владельцу при любом отклонении.
Что проверить, если сайт уводит на другой адрес
siteurlиhomeв таблицеwp_options..htaccessв корне и во вложенных папках — там тоже бывают редиректы.- Сверку ядра с контрольными суммами.
- Текст страниц и данные конструктора на внешние
<script>.
Если редирект только с телефона — читайте «Сайт перенаправляет на казино с телефона».
Частые вопросы
Можно просто вернуть адрес сайта в настройках?
Можно, и сайт заработает. Но бэкдор подменит адрес снова, а пароли, которые вы введёте при входе, уйдут злоумышленнику. Сначала нужно найти и удалить код.
Нужно ли менять пароли после чистки?
Обязательно — и только после удаления бэкдора. Пароли, введённые, пока он работал, считайте известными злоумышленнику: админка, а если вы использовали тот же пароль где-то ещё, то и там.
Вернутся ли позиции в поиске?
Обычно да, если быстро убрать редирект и спам и запросить перепроверку в Яндекс.Вебмастере и Google Search Console. Подробнее — в статье о пометке «опасный сайт».