Skip to content

Всё для WordPress, веб-разработки — и не только

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

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

Проснулись утром, а ваш сайт WordPress превратился в филиал онлайн-казино или молча ушёл в бан Google. Знакомо? Взлом рушит не только файлы на сервере: трафик обнуляется, позиции в выдаче летят вниз, а бизнес встаёт на дни, иногда на недели.

Хуже всего момент, когда поддержка хостинга разводит руками: «Резервные копии тоже заражены, помочь не можем». Типичная история для тысяч владельцев сайтов, особенно тех, кто сидит на дешёвом shared-тарифе.

Хорошая новость: даже полностью захваченный сайт реально очистить и поднять за вечер. Без армии программистов и дорогих контрактов с security-фирмами. Нужны холодная голова, правильный порядок шагов и понимание, где прячется вредоносный код.

💡 Быстрый обзор:

  • Оцените масштаб: есть ли доступ в админку, что говорит хостинг, какие файлы тронуты
  • Свяжитесь с хостинг-провайдером и добейтесь списка заражённых файлов
  • Удалите или замените скомпрометированные файлы через cPanel, FTP или WP-CLI
  • Восстановите чистую версию сайта из резервной копии или переустановите ядро
  • Смените ВСЕ пароли, ключи безопасности в wp-config.php и закройте точку входа
  • Запросите удаление из чёрных списков Google и хостинга

Шаг 1: Оцените масштаб и не паникуйте

Уведомление о взломе сайта от хостинг-провайдера

Первым делом проверьте, открывается ли админка. Если wp-admin пускает и вы можете войти, ситуация поправимая, часто всё решается за час. Доступ заблокирован, придётся работать через хостинг-панель или FTP, но это тоже не приговор.

Второе: не удаляйте сайт целиком сгоряча. В 90% случаев заражены конкретные файлы, а не вся установка WordPress. Зайдите в Search Console от Google, вкладка Security, там перечислены URL, которые Google пометил как вредоносные. Это даст первое представление о масштабе.

Третье: сразу напишите хостеру. Не «нас взломали, помогите», а конкретно: «Пришлите список модифицированных файлов с временными метками и логи подозрительной активности за последние 72 часа». У хостинга есть серверные логи, они видят аномалии и могут дать точный перечень заражённых файлов.

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

Шаг 2: Найдите и удалите заражённые файлы

Список заражённых вредоносным кодом PHP-файлов

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

Сделайте полную копию сайта. Скачайте ВСЕ файлы на локальный компьютер через FTP или SFTP. Даже заражённые, они пригодятся для анализа и как страховка на случай, если что-то пойдёт не так.

Переустановите ядро WordPress. Удалите папки wp-admin и wp-includes полностью, затем скачайте свежий ZIP с wordpress.org и распакуйте поверх. Замените всё, кроме wp-content и wp-config.php. Это гарантирует, что системные файлы чисты.

Проверьте wp-content. Плагины и темы, главная цель злоумышленников. Если плагин заражён, удалите его папку целиком и поставьте заново из официального репозитория. Если заражена тема, а вы используете дочернюю, скорее всего пострадала только родительская, переустановите её.

Ищите сигнатуры вредоносного кода. Классические маркеры PHP-шеллов и бэкдоров: eval и base64_decode, самые частые. Также встречаются gzinflate, str_rot13 и assert. Пройдитесь grep-поиском по всем .php-файлам. Проверьте скрытые файлы: .htaccess, php.ini и .ico с PHP-кодом внутри. Хакеры обожают маскировать бэкдоры под безобидные иконки.

Шаг 3: Восстановите сайт из чистой копии

Если резервная копия есть и она чистая, вам повезло: восстановление займёт 15-20 минут. Зайдите в плагин бэкапа или панель хостинга, выберите точку восстановления ДО даты взлома и запустите процесс. Сразу после восстановления прогоните сканер безопасности: бэкдор могли заложить задолго до активной атаки.

Бэкапа нет? Переустановите WordPress через админку: «Обновления» → «Переустановить». Это обновит ядро, но оставит плагины и темы нетронутыми, их придётся проверять вручную, как описано в шаге 2.

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

Шаг 4: Смените все учётные данные и ключи

Интерфейс генерации ключей безопасности в wp-config.php

Первое и самое срочное: сгенерируйте новые ключи безопасности WordPress. Вставьте их в wp-config.php вместо старых. Это мгновенно разлогинит ВСЕ активные сессии, включая сессию хакера, если он ещё сидит в админке.

Дальше меняйте по списку, ничего не пропуская:

  • Пароль администратора WordPress и всех пользователей с ролью «администратор»
  • Пароль от хостинг-аккаунта: cPanel, ISPmanager или кастомная панель
  • Пароль от базы данных MySQL и обновите его в wp-config.php
  • Пароль от FTP или SFTP
  • Пароль от почтового ящика, привязанного к админке сайта
  • API-ключи: Google Search Console, CDN, почтовые сервисы, платёжные шлюзы

Проверьте таблицу wp_users в базе данных: нет ли незнакомых пользователей с правами администратора. Нашли, удалите немедленно. Это классический след атаки: хакер создаёт скрытую учётную запись и возвращается через неё после вашей «очистки».

Шаг 5: Запросите удаление из чёрных списков

После очистки сайт может ещё несколько дней висеть в чёрных списках Google Safe Browsing. Браузеры при этом показывают красный экран с предупреждением, даже если вредоносный код уже удалён. Зайдите в панель безопасности Search Console, вкладка «Security Issues», и нажмите «Request Review». Обычно Google снимает флаг в течение 24-72 часов.

Параллельно свяжитесь с хостером: он мог добавить ваш IP или домен во внутренний чёрный список, из-за чего сайт не открывается, даже будучи чистым. Объясните, что очистка проведена, и запросите снятие блокировки.

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

Шаг 6: Закройте точку входа и усильте защиту

Схема защиты WordPress после восстановления от взлома

Очистка, это полдела. Если не закрыть дыру, через которую зашли, второй взлом случится в десятки раз быстрее первого. Вы теперь точно знаете вектор атаки, используйте это знание.

Поставьте файрвол. Wordfence даёт эндпоинтовый файрвол и сканер сигнатур, бесплатной версии достаточно для большинства сайтов. Solid Security (бывший iThemes Security) добавляет набор hardening-правил: смена префикса базы данных, отключение редактора файлов из админки, двухфакторная аутентификация. Минимальный набор: один файрвол плюс один сканер.

Подключите облачный WAF. Cloudflare с правилами для WordPress или Sucuri фильтруют трафик до того, как он достигает сервера. После взлома это не роскошь, а необходимость: облачный WAF отсекает вредоносные запросы на уровне DNS и снимает нагрузку с вашего сайта.

Настройте мониторинг целостности файлов. Wordfence и Solid Security умеют оповещать при любом изменении PHP-файлов. Вы узнаете о повторной атаке в ту же минуту, а не через неделю, когда Google пометит сайт как вредоносный.

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

Как защитить WordPress от взлома в будущем

Сравнение панелей управления хостингом для WordPress

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

Переезжайте на управляемый хостинг

Четыре доллара в месяц за shared-тариф, цена соблазнительная. Но когда ваш сайт живёт на одном сервере с сотнями других, взлом одного из соседей почти гарантированно добирается до вас. Cross-site contamination на shared-хостинге не теория: по данным Sucuri, около трети заражённых сайтов WordPress размещены именно на shared-площадках.

Управляемый WordPress-хостинг, WP Engine, Kinsta, Cloudways, даёт изолированное окружение, автоматические ежедневные бэкапы и круглосуточную security-команду. Да, это в разы дороже shared-тарифа. Но неделя простоя после взлома стоит дороже годового тарифа хорошего хостинга.

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

Держите ядро, темы и плагины обновлёнными

Интерфейс обновлений плагинов в панели администратора WordPress

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

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

И да, перед каждым крупным обновлением делайте бэкап. Всегда.

Настройте резервное копирование

Каталог тем и плагинов на сайте WordPress.org

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

Jetpack VaultPress Backup делает инкрементальные бэкапы в реальном времени с хранением в облаке Automattic. BlogVault специализируется на WordPress и умеет восстанавливать сайт, даже если админка лежит. BackWPup, бесплатный вариант с календарём и выгрузкой в Dropbox, S3 или Google Drive.

Золотой стандарт: один облачный бэкап плюс один локальный, который вы скачиваете себе на компьютер раз в неделю. Облачный спасёт при отказе хостинга, локальный, если облачный аккаунт тоже скомпрометирован.

Включите двухфакторную аутентификацию

Пароль admin123 или qwerty, открытое приглашение. Брутфорс-атаки на wp-login.php идут круглосуточно, и простые пароли подбираются за секунды. Генерируйте пароли длиной от 20 символов через менеджер, Bitwarden или 1Password, и никогда не используйте один пароль на нескольких сайтах.

Двухфакторная аутентификация через Wordfence Login Security или Two Factor закрывает вектор брутфорса практически полностью: даже зная пароль, злоумышленник не войдёт без TOTP-кода с вашего телефона.

И смените стандартный URL входа с /wp-admin и /wp-login.php на кастомный. Это не панацея, но отсекает подавляющее большинство автоматических ботов, которые долбят стандартные эндпоинты не глядя.

⁉️🤔 Частые вопросы

Можно ли восстановить сайт без резервной копии?

Да, но процесс дольше и сложнее. Переустановите ядро WordPress через админку, вручную проверьте каждый плагин и тему на вредоносный код по сигнатурам eval, base64_decode и gzinflate в .php-файлах. Смените все пароли и ключи безопасности. Контент обычно не страдает: он в базе данных, которую хакеры редко трогают. Полная очистка без бэкапа занимает 2-4 часа в зависимости от размера сайта.

Как понять, что сайт взломали?

Сигналы: Google Search Console показывает предупреждение безопасности, браузер блокирует сайт красным экраном, трафик резко упал, в выдаче появились чужие страницы, админка не пускает с правильным паролем, хостинг прислал уведомление о подозрительной активности. Быстрая проверка: запустите бесплатный сканер Sucuri SiteCheck, он показывает известные заражения за минуту.

Что делать, если хостинг не помогает?

Меняйте хостинг. Если провайдер за сутки после инцидента не предоставил список заражённых файлов и логи сервера, его security-команда либо отсутствует, либо перегружена. Для бизнес-сайта это не партнёр. На время восстановления купите минимальный тариф управляемого хостинга, перенесите туда чистую копию сайта и закройте старый аккаунт.

Достаточно ли кнопки «Переустановить» в админке?

Нет. Кнопка «Переустановить» в разделе «Обновления» заменяет только файлы ядра WordPress. Заражённые плагины, темы, скрытые бэкдоры в wp-content и вредоносные записи в .htaccess она не трогает. Нужен полный цикл: сканирование, замена заражённых файлов, сброс паролей и ключей, проверка базы данных на скрытых администраторов.

Стоит ли платить за профессиональную очистку?

Если сайт приносит деньги и простой стоит дороже нескольких сотен долларов в день, да, наймите специалиста. Sucuri предлагает разовую очистку сайта, есть фрилансеры на Codeable и профильные WordPress-агентства. Для небольшого блога или лендинга описанного выше руководства достаточно: очистка займёт вечер, а сэкономленные деньги вложите в нормальный хостинг.

Как долго сайт будет восстанавливать позиции в поиске?

После снятия блокировки Google Search Console сайт переиндексируется в течение нескольких дней. Позиции возвращаются не сразу: алгоритмам нужно время, чтобы убедиться, что страницы чисты. Обычно полное восстановление занимает 2-4 недели. Ключевое, закрыть дыру, через которую зашли, иначе второй взлом обнулит весь прогресс.

Сайт восстановлен: что делать, чтобы взлом не повторился

Взлом, это тревожный звонок, который показывает, где ваша защита дала трещину. Отнеситесь к нему как к бесплатному аудиту безопасности: вы теперь точно знаете вектор атаки и можете закрыть его навсегда.

Краткий чек-лист на будущее:

  • Перенесите сайт на управляемый хостинг с изолированным окружением
  • Настройте ежедневные бэкапы: один облачный, один локальный
  • Поставьте файрвол и сканер, включите автообновления для плагинов из репозитория
  • Включите двухфакторную аутентификацию для всех администраторов
  • Удалите неиспользуемые плагины и темы

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