WordPress — самая распространённая CMS, и на неё же приходится основная масса автоматических атак. Ломают не конкретный сайт, а всё подряд: робот перебирает адреса и проверяет, нет ли устаревшего модуля из известного списка.
Чаще всего вход находят через давно не обновлявшийся плагин, скачанную со стороны тему или слабый пароль администратора. Разбираем, как искать заражение и что делать, чтобы оно не вернулось.
Где искать вредоносный код
- Каталог плагинов — особенно старые формы, слайдеры и SEO-модули.
- Каталог тем — подмена служебных файлов темы, чаще всего подвала и файла функций.
- Каталог загрузок — исполняемые файлы среди картинок, которых там быть не должно.
- База данных — вставки в опубликованных материалах и в виджетах.
- Служебные файлы в корне — правила перенаправления, изменённые не вами.
Признак и место заражения
| Что происходит | Где обычно искать |
|---|---|
| Редирект только с телефонов или из поиска | Файлы темы и правила перенаправления в корне |
| Чужие страницы в выдаче | Каталог загрузок, залитые файлы-дорвеи |
| Реклама на страницах, невидимая под админом | База: содержимое материалов и виджеты |
| Заражение возвращается после чистки | Бэкдор в плагине или задание планировщика |
Базовый порядок действий
- Снять копию файлов и базы «как есть» — до любых изменений.
- Сменить пароли и служебные ключи безопасности в конфигурации сайта.
- Сравнить ядро с чистой версией с официального сайта, лишние файлы удалить.
- Отключить все плагины и включать по одному, проверяя поведение сайта.
- Поставить стандартную тему для проверки — так видно, в теме ли дело.
- Просканировать базу на вставки скриптов и посторонние ссылки.
Чего делать нельзя
- Удалять файлы без копии. Вместе с заражением исчезнут следы, и причина останется неизвестной.
- Восстанавливаться из свежего бэкапа вслепую. Если копия сделана после заражения, вы вернёте вредонос обратно.
- Чистить только видимое. Бэкдор почти всегда не один, и второй сработает через неделю.
- Оставлять старую версию плагина. Через ту же дыру зайдут повторно, обычно за несколько дней.
Как понять, что чистка удалась
Сайт открывается одинаково из инкогнито, с телефона и из поисковой выдачи; в списке пользователей нет посторонних; чужие страницы ушли из индекса; хостинг больше не присылает уведомления. Контрольный срок — неделя: возвращающиеся редиректы означают, что бэкдор остался.
Чтобы не повторилось
Регулярные обновления WordPress и модулей, ограничение попыток входа, двухфакторная аутентификация, копии по правилу 3-2-1 и мониторинг изменений файлов. Это скучная часть, но именно она отделяет разовую чистку от ежеквартальной.
Когда нужна профессиональная чистка
Если редиректы возвращаются через день, в панели снова появляются новые пользователи или хостинг блокирует сайт повторно — самостоятельный поиск уже не помогает. Нужен разбор с проверкой планировщика, правил сервера, прав на каталоги и всех точек входа сразу.
Сколько занимает чистка
Простое заражение одного плагина разбирается за несколько часов. Если сайт заражён давно, бэкдоров несколько, а копий нет — счёт идёт на дни, причём основное время уходит не на удаление, а на поиск точки входа и проверку, что она действительно закрыта. Быстрая чистка без поиска причины — это не экономия, а отсрочка.
Отдельная статья расходов — последствия: снятие меток в браузерах, переиндексация чужих страниц, восстановление репутации почты, если с домена шла рассылка. Эта часть занимает недели и от скорости работы уже не зависит.
Когда проще перенести сайт, чем чистить
Иногда честный ответ — не чистить. Если сайт собран на пиратской теме, половина модулей снята с поддержки, а технический долг копился годами, чистка закончится тем, что через месяц всё повторится на другом модуле. В такой ситуации разумнее перенести контент на актуальную сборку и закрыть вопрос целиком, а не латать каждую дыру по очереди.
Признаки, что дело идёт к этому: ядро CMS не обновлялось больше двух лет, тема куплена не у автора, у сайта нет ни одной рабочей копии, а хостинг блокировал его уже не первый раз.
Выводы
- Заражение WordPress почти всегда массовое, а не адресное: цель — устаревший модуль.
- Копия «как есть» снимается до чистки, иначе причину найти нечем.
- Чистка без закрытия дыры даёт повтор в течение недель.
- Проверять результат нужно из инкогнито и с телефона, а не из админки.
Почистим сайт и найдём точку входа: аудит безопасности и чистка. Чтобы обновления и копии делались без вашего участия, есть поддержка сайтов, а по самой CMS — работы по WordPress.