Краткий ответ: чтобы удалить вирус с сайта WordPress, сначала сделайте резервную копию заражённого сайта, зафиксируйте симптомы, смените пароли, проверьте пользователей, найдите вредоносные файлы, замените ядро WordPress чистой версией, переустановите плагины и тему из доверенных источников, очистите базу данных, проверьте .htaccess, wp-config.php, uploads, cron-задачи и только после этого включайте защиту от повторного заражения.
Вирус на сайте WordPress — это не всегда один файл. На практике заражение часто состоит из нескольких частей: вредоносный PHP-код в теме, backdoor в uploads, скрытый администратор, изменённый .htaccess, спам-ссылки в базе данных, вредный JavaScript в записях или подмена файлов ядра.
Если удалить только видимый вредоносный код, сайт может заразиться снова через несколько часов или дней. Поэтому главная задача — не просто стереть подозрочную строку, а найти точку входа и закрыть её.
Если сайт уже взломали и вы не знаете, с чего начать, полезно сначала открыть материал Сайт WordPress взломали: что делать владельцу сайта. Там логика действий шире: от срочной изоляции до восстановления доверия поисковых систем.
Перед очисткой нужно понять масштаб заражения. Нельзя лечить WordPress только по одному найденному файлу, потому что вирус часто оставляет несколько точек возврата.
| Симптом | Что это может означать | Где проверять |
|---|---|---|
| Редирект на чужой сайт | Вредоносный JavaScript, .htaccess, wp_options или заражённый плагин | исходный код страницы, .htaccess, база данных, плагины |
| В Google пишет “сайт может быть взломан” | Поисковик нашёл спам, дорвеи, скрытые ссылки или вредный код | Google Search Console, страницы, sitemap, база |
| Появились чужие страницы | SEO-спам, doorway, заражение базы или генератор мусорных URL | wp_posts, sitemap, index.php, плагины |
| Не работает админка | Вирус сломал PHP-код, права, .htaccess или пользователя | debug.log, error_log, FTP, wp_users |
| Файлы появляются снова после удаления | На сайте остался backdoor или cron-задача | uploads, mu-plugins, wp-cron, wp-config.php, временные папки |
| Антивирус хостинга снова находит угрозы | Очищена только часть заражения | весь аккаунт хостинга, соседние сайты, логи доступа |
Правильная очистка WordPress строится по этапам. Если пропустить смену паролей, проверку пользователей или удаление backdoor, сайт может заразиться повторно.
Даже заражённый сайт нужно сохранить перед очисткой. Это страховка на случай, если при удалении файлов будет затронут нужный контент, заказы WooCommerce, медиафайлы или база данных.
Сохраните:
Если сайт раздаёт вирус, редиректы или спам-страницы, временно закройте его от посетителей. Лучше показать техническое сообщение, чем продолжать заражать пользователей и портить репутацию домена.
Если есть интернет-магазин, форму оплаты и заказы нельзя отключать наугад. Сначала сделайте backup и проверьте, какие части сайта критичны для бизнеса.
Пароли нужно менять не один раз, а в правильный момент. Сначала смените доступы, чтобы остановить активное вмешательство. После полной очистки смените их повторно.
Откройте таблицу пользователей или админку, если она доступна. Удалите неизвестных администраторов. Проверьте не только wp_users, но и wp_usermeta, потому что права пользователя хранятся там.
Если админка не открывается, используйте phpMyAdmin или WP-CLI.
Файлы ядра лучше не лечить вручную, а заменить чистыми файлами той же или новой стабильной версии WordPress. Нельзя удалять wp-content и wp-config.php без понимания, потому что там находятся тема, плагины, загрузки и настройки подключения к базе.
Обычно заменяют:
Если плагин или тема заражены, лучше скачать чистую версию из официального источника и заменить папку полностью. Ручная чистка каждого файла занимает больше времени и не всегда надёжна.
Особое внимание:
В папке uploads должны быть изображения, документы, видео и другие медиа. PHP-файлы внутри uploads почти всегда подозрительны.
Проверьте такие расширения:
Вирус может быть не только в файлах. Часто заражение хранится в базе данных: в записях, виджетах, настройках темы, опциях плагинов и временных данных.
Проверяйте:
Backdoor — это скрытый файл или код, который позволяет злоумышленнику снова получить доступ. Если его не удалить, сайт будет заражаться повторно.
Частые места:
После удаления вируса проверьте сайт как обычный пользователь, администратор и поисковый робот.
Важно: команды и правила ниже могут повлиять на доступ к сайту, загрузку файлов, работу плагинов, кеша, WooCommerce и админки. Перед использованием сделайте backup. Не удаляйте найденные файлы автоматически, сначала проверьте их вручную.
Куда запускать: SSH в корневой папке сайта.
wp core verify-checksums
Если команда показывает изменённые файлы ядра, замените их чистой версией WordPress.
Куда запускать: SSH через WP-CLI.
wp user list --role=administrator
wp plugin list --status=active
Куда запускать: SSH. Команда только показывает файлы, не удаляет их.
find wp-content/uploads -type f ( -name "*.php" -o -name "*.phtml" -o -name "*.php5" -o -name "*.phar" )
Куда запускать: SSH. Это диагностика, а не готовый список вирусов. Иногда похожие строки бывают в нормальных библиотеках.
grep -RIn --include="*.php" "base64_decode|eval(|gzinflate|str_rot13|shell_exec|assert(" .
Куда вставлять: файл /wp-content/uploads/.htaccess. Если файла нет, создайте его. На Nginx это правило не сработает, там нужна настройка сервера.
<FilesMatch ".(php|phtml|php5|php7|phar)$">
Require all denied
</FilesMatch>
Куда вставлять: wp-config.php, перед строкой /* That’s all, stop editing! Happy publishing. */.
define('DISALLOW_FILE_EDIT', true);
Куда вставлять: wp-config.php. Новые ключи нужно взять с официального генератора WordPress. После замены всех пользователей выбросит из аккаунтов.
define('AUTH_KEY', 'замените-на-новое-значение');
define('SECURE_AUTH_KEY', 'замените-на-новое-значение');
define('LOGGED_IN_KEY', 'замените-на-новое-значение');
define('NONCE_KEY', 'замените-на-новое-значение');
define('AUTH_SALT', 'замените-на-новое-значение');
define('SECURE_AUTH_SALT', 'замените-на-новое-значение');
define('LOGGED_IN_SALT', 'замените-на-новое-значение');
define('NONCE_SALT', 'замените-на-новое-значение');
После нормальной очистки сайт должен не просто открываться. Нужно убедиться, что вирус не восстанавливается, поисковые системы больше не видят вредный код, а точка входа закрыта.
Хороший результат выглядит так:
Если есть резервная копия до заражения, это часто самый быстрый путь. Но backup нужно проверять. Если восстановить копию, в которой уже был backdoor, сайт снова заразится.
После восстановления:
Многие хостинги имеют встроенный антивирус. Он помогает найти заражённые файлы, но не всегда понимает структуру WordPress. После автоматической очистки всё равно проверьте базу, пользователей, wp-config.php, .htaccess и плагины.
Если сайт попал в предупреждения Google, после очистки нужно отправить запрос на повторную проверку. Перед этим убедитесь, что вредоносный код удалён, а sitemap не содержит мусорных URL.
Если на одном аккаунте хостинга лежит несколько сайтов, заражение может переходить между ними. В таком случае чистить нужно весь аккаунт, а не только одну папку WordPress.
После удаления вируса обязательно настройте базовую защиту. Иначе сайт может снова заразиться через ту же уязвимость. Подробный список настроек есть в статье Защита WordPress от взлома: что обязательно настроить.
Это временное решение. Если остался backdoor или слабый пароль, вредоносный файл появится снова.
При ручной очистке можно случайно удалить нужный файл темы, загрузки, настройки или данные заказов. Backup нужен даже заражённый.
Файлы вида backup.zip, old-site.zip, site_old/, test/, copy/ часто содержат старые уязвимые копии сайта. Их нужно убрать из публичной папки.
Пиратские архивы часто уже содержат вредоносный код. После такой установки сайт может заразиться сразу.
Многие чистят только файлы, но вирусные вставки могут храниться в wp_posts, wp_options, виджетах и настройках конструктора страниц.
Если злоумышленник уже получил доступ, старый пароль может остаться у него. Пароли нужно заменить после финальной очистки.
Если после заражения не открывается wp-admin, используйте инструкцию Не работает админка WordPress: причины и способы восстановления доступа.
Сделайте backup, смените пароли, проверьте пользователей, замените ядро WordPress чистой версией, переустановите плагины и тему, удалите вредоносные файлы, очистите базу, проверьте uploads, .htaccess, wp-config.php и закройте уязвимость.
Чаще всего вирус находится в wp-content/uploads, plugins, themes, mu-plugins, index.php, .htaccess, wp-config.php, wp_posts и wp_options.
Обычно остался backdoor, неизвестный администратор, слабый пароль, заражённая копия сайта, уязвимый плагин или соседний заражённый сайт на том же хостинге.
Сканер может помочь найти заражение, но полагаться только на автоматическую очистку опасно. Нужно проверить файлы, базу, пользователей, пароли, backup, права доступа и источник взлома.
Да, если есть доступ к FTP, базе данных, хостингу и понимание структуры WordPress. Но если сайт коммерческий, есть WooCommerce, личные данные пользователей или предупреждение Google, лучше действовать очень аккуратно.
Иногда это самый чистый вариант, но важно сохранить wp-content/uploads, базу данных и нужные файлы темы. Ядро WordPress, плагины и тему лучше заменить чистыми версиями.
Можно, если backup точно сделан до заражения. После восстановления всё равно нужно обновить сайт, сменить пароли, проверить пользователей и закрыть уязвимость.
Сайт не редиректит, сканеры не находят угроз, в uploads нет PHP-файлов, нет неизвестных администраторов, ядро проходит проверку целостности, база очищена, Google Search Console не показывает новых проблем.
Обычно очистили только симптомы. На сайте мог остаться backdoor, вредный cron, заражённый плагин, старая копия сайта или доступ злоумышленника через пароль.
Нужно искать вредоносные script, iframe, redirect, hidden links и подозрительные опции. Перед правкой базы сделайте экспорт. Массовые SQL-замены без проверки могут сломать контент и настройки сайта.
Обновите WordPress, плагины и тему, удалите лишние плагины, включите 2FA, настройте backup, ограничьте доступ к wp-admin, запретите PHP в uploads, проверьте права файлов и используйте защитный плагин или WAF.
Если сайт WordPress заражён, редиректит посетителей, попал в предупреждения Google или вирус появляется снова после удаления, лучше сначала провести техническую диагностику, а не чистить файлы наугад.
Удаление вируса с сайта WordPress — это не одно действие, а полный процесс: backup, диагностика, очистка файлов, проверка базы, замена паролей, удаление backdoor, восстановление доверия поисковых систем и защита от повторного взлома. Если убрать только видимый вредоносный код, причина останется, и заражение может вернуться.
Об авторе