MAATRIX / Блог / WordPress: взломали сайт — причины и решение

WordPress: взломали сайт — причины и решение

WordPress: взломали сайт — причины и решение

MAATRIX

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

Обсудить статью, задать вопрос или начать новую тему

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

Перейти в сообщество →

Первое действие: изолируйте сайт и сделайте копию улик

Прежде чем что-то удалять, зафиксируйте текущее состояние и остановите распространение. Первым делом переведите сайт в режим обслуживания или временно закройте доступ, чтобы посетители не заражались и поисковики не индексировали спам. Затем сделайте полную копию текущего (заражённого) состояния файлов и базы — это и улики, и страховка на случай, если при чистке что-то пойдёт не так:

tar czf hacked-backup.tar.gz /var/www/site
mysqldump mydb > hacked-db.sql

Не спешите сразу всё сносить: заражённая копия поможет понять, как вошли, и не потерять контент. Смените временный пароль хостинга/сервера, чтобы атакующий не имел доступа во время чистки. Изоляция и снятие копии — обязательный первый шаг: он останавливает вред посетителям и даёт вам безопасно работать, не уничтожая информацию о том, что и как было взломано.

Причина 1: устаревший плагин или тема

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

wp plugin list --fields=name,status,version,update
wp theme list

Особое внимание — заброшенным плагинам, которые давно не обновлялись автором, и «нуленым» (пиратским) темам и плагинам: последние часто изначально содержат бэкдоры. Именно устаревший или сомнительный компонент — самая частая точка входа. После чистки все уязвимые расширения нужно обновить до последних версий, а заброшенные и пиратские — удалить и заменить поддерживаемыми аналогами. Пока дыра открыта, сайт взломают снова через день после любой чистки, поэтому закрытие точки входа — не менее важная часть, чем удаление вредоноса.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать защищённый VPS

Причина 2: вредоносный код в файлах

Взломщики внедряют вредоносный код в файлы: бэкдоры для повторного входа, редиректы, спам-инъекции, скрипты рассылки. Найти их помогает поиск характерных признаков — обфусцированных функций и подозрительных вставок. Поищите типичные маркеры вредоносного PHP:

grep -rEl "eval\(|base64_decode\(|gzinflate\(|str_rot13\(" /var/www/site/wp-content

Эти функции часто (хотя не всегда) встречаются во вредоносном коде, спрятанном среди легитимных файлов. Обращайте внимание на недавно изменённые файлы — их можно найти по времени модификации, что особенно полезно, если знаете примерную дату взлома. Самый надёжный способ вычистить ядро — переустановить его файлы поверх, а плагины и темы заменить свежими копиями из официального источника:

wp core download --force

Файлы ядра, wp-admin и wp-includes безопасно заменяются целиком. Плагины и темы лучше не «лечить» точечно, а переустановить начисто из доверенных источников — так вы гарантированно убираете внедрённый код. Внимательно проверьте wp-content/uploads: там не должно быть исполняемых PHP-файлов, их наличие — верный признак заражения.

Причина 3: вредоносные записи в базе данных

Заражение живёт не только в файлах — часто вредонос сидит и в базе: инъекции скриптов в опции, поддельные администраторы, спам-контент, вредоносные записи в wp_options. Проверьте список пользователей с правами администратора — лишние аккаунты это прямой признак взлома:

SELECT user_login, user_registered FROM wp_users;

Удалите неизвестных администраторов, которых вы не создавали. Проверьте wp_options на подозрительные автозагружаемые записи с кодом, таблицу с внедрёнными скриптами в контенте, неожиданные записи в планировщике (wp-cron), которые переустанавливают вредонос. Правки в базе делайте аккуратно и только с бэкапом. Чистка базы — важный и часто забываемый шаг: если вычистить файлы, но оставить поддельного админа или вредоносную autoload-запись, сайт заразится снова. Проходите и по файлам, и по базе — вредонос обычно закрепляется в обоих местах, чтобы пережить частичную чистку.

Причина 4: скомпрометированные доступы

Взлом мог произойти и через украденный или слабый пароль — администратора WordPress, FTP, SSH, базы или панели хостинга. После любой чистки нужно исходить из того, что все доступы скомпрометированы, и сменить их полностью. Смените пароли всех администраторов WordPress, пользователей FTP/SSH, базы данных и панели. Обновите ключи безопасности WordPress (salts) в wp-config.php, чтобы разлогинить все активные сессии, включая сессию злоумышленника:

wp config shuffle-salts

Это инвалидирует все текущие cookie-сессии — любой, кто был залогинен по украденной сессии, вылетит. Проверьте и права на файлы: они не должны быть избыточно открытыми (777), wp-config.php — с ограниченными правами. Если использовался вход по паролю SSH — самое время перейти на вход по ключу. Смена всех доступов обязательна: без неё вы вычистите вредонос, а атакующий просто зайдёт снова по сохранённому паролю и заразит сайт заново. Считайте скомпрометированным всё, к чему у него мог быть доступ.

Как убедиться, что сайт чист

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

wp plugin verify-checksums --all
wp core verify-checksums

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

Профилактика: чтобы не взломали снова

Вычистить сайт мало — нужно закрыть дыру, иначе взлом повторится. Держите ядро, плагины и темы всегда обновлёнными: устаревший компонент это открытая дверь. Удалите всё лишнее и заброшенное, никогда не используйте пиратские плагины и темы. Ставьте сильные уникальные пароли и двухфакторную аутентификацию для админов, вход по SSH — только по ключу. Поставьте плагин безопасности или WAF, ограничьте попытки входа, закройте доступ к wp-admin по IP, если возможно.

И главное — регулярные автоматические бэкапы, которые хранятся отдельно от сервера. Чистый бэкап до заражения — это возможность восстановиться за минуты вместо часов ручной чистки. Свой VPS с полным доступом здесь большое преимущество: вы контролируете файрвол, версии ПО, права и логи, можете изолировать и вычистить сайт по-настоящему, а не в тесных рамках дешёвого хостинга. Безопасность WordPress — это не разовая уборка, а постоянная гигиена: обновления, сильные доступы, бэкапы и контроль. Она стоит куда меньше, чем восстановление после взлома.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США и РФ. Оплата картой РФ и по СБП.

Арендовать защищённый VPS

Обсудить статью, задать вопрос или начать новую тему

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

Перейти в сообщество →

Частые вопросы

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

Признаки: редиректы на чужие сайты, спам в поисковой выдаче, предупреждения антивируса браузера, неизвестные администраторы, незнакомые PHP-файлы в uploads, всплеск исходящих писем. Проверьте файлы и базу на вредоносные вставки.

Что делать в первую очередь при взломе?

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

Почему сайт взламывают снова после чистки?

Осталась точка входа (устаревший плагин), недочищенный бэкдор в файлах или базе, либо не сменены скомпрометированные пароли. Чистить нужно и файлы, и базу, обновить всё и сменить все доступы.

Как оплатить защищённый сервер из России?

В MAATRIX — картой российского банка, через СБП, криптовалютой или токеном MAAT. Иностранная карта не нужна.

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.