Как удалить вирус с сайта WordPress: пошаговая очистка и защита

Автор:vkuzyomko

Как удалить вирус с сайта WordPress: пошаговая очистка и защита

Краткий ответ: чтобы удалить вирус с сайта WordPress, сначала сделайте резервную копию заражённого сайта, зафиксируйте симптомы, смените пароли, проверьте пользователей, найдите вредоносные файлы, замените ядро WordPress чистой версией, переустановите плагины и тему из доверенных источников, очистите базу данных, проверьте .htaccess, wp-config.php, uploads, cron-задачи и только после этого включайте защиту от повторного заражения.

Причина

Вирус на сайте WordPress — это не всегда один файл. На практике заражение часто состоит из нескольких частей: вредоносный PHP-код в теме, backdoor в uploads, скрытый администратор, изменённый .htaccess, спам-ссылки в базе данных, вредный JavaScript в записях или подмена файлов ядра.

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

Если сайт уже взломали и вы не знаете, с чего начать, полезно сначала открыть материал Сайт WordPress взломали: что делать владельцу сайта. Там логика действий шире: от срочной изоляции до восстановления доверия поисковых систем.

Частые причины заражения

  • старые версии WordPress, плагинов или темы;
  • пиратские темы и nulled-плагины;
  • слабые пароли администратора, FTP, хостинга или базы данных;
  • заражённый компьютер, с которого заходили в админку или FTP;
  • права файлов 777;
  • открытая запись в wp-config.php, .htaccess или папку uploads;
  • уязвимость в плагине формы, конструктора страниц, кеша, импорта или файлового менеджера;
  • старые резервные копии, zip-архивы и тестовые копии сайта в public_html;
  • неизвестные администраторы в базе данных;
  • backdoor-файлы, которые восстанавливают вирус после очистки.

Диагностика

Перед очисткой нужно понять масштаб заражения. Нельзя лечить 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;
  • дату изменения файлов в корне сайта;
  • папки /wp-content/plugins/, /wp-content/themes/, /wp-content/uploads/;
  • файлы index.php, wp-config.php, .htaccess;
  • наличие PHP-файлов внутри uploads;
  • подозрительные файлы в mu-plugins;
  • таблицы wp_posts, wp_options, wp_users, wp_usermeta;
  • cron-задачи WordPress и хостинга;
  • логи access_log и error_log;
  • Google Search Console и предупреждения браузера.

Решение

Правильная очистка WordPress строится по этапам. Если пропустить смену паролей, проверку пользователей или удаление backdoor, сайт может заразиться повторно.

1. Сделайте резервную копию заражённого сайта

Даже заражённый сайт нужно сохранить перед очисткой. Это страховка на случай, если при удалении файлов будет затронут нужный контент, заказы WooCommerce, медиафайлы или база данных.

Сохраните:

  • все файлы сайта;
  • базу данных;
  • текущий .htaccess;
  • wp-config.php;
  • логи хостинга;
  • список активных плагинов и темы.

2. Переведите сайт в безопасный режим

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

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

3. Смените пароли

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

  • администраторы WordPress;
  • FTP/SFTP;
  • SSH;
  • панель хостинга;
  • база данных;
  • почта администратора;
  • Cloudflare/CDN, если используется;
  • аккаунты разработчиков и подрядчиков.

4. Проверьте пользователей WordPress

Откройте таблицу пользователей или админку, если она доступна. Удалите неизвестных администраторов. Проверьте не только wp_users, но и wp_usermeta, потому что права пользователя хранятся там.

Если админка не открывается, используйте phpMyAdmin или WP-CLI.

5. Замените ядро WordPress чистой версией

Файлы ядра лучше не лечить вручную, а заменить чистыми файлами той же или новой стабильной версии WordPress. Нельзя удалять wp-content и wp-config.php без понимания, потому что там находятся тема, плагины, загрузки и настройки подключения к базе.

Обычно заменяют:

  • /wp-admin/
  • /wp-includes/
  • основные файлы в корне WordPress, кроме wp-config.php и пользовательских файлов

6. Переустановите плагины и тему

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

Особое внимание:

  • старые плагины, которые давно не обновлялись;
  • плагины, которых нет в официальном репозитории;
  • платные плагины из случайных архивов;
  • дочерняя тема с кастомным functions.php;
  • папки с названиями, похожими на системные файлы.

7. Проверьте uploads

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

Проверьте такие расширения:

  • .php
  • .phtml
  • .php5
  • .phar
  • .shtml
  • файлы без расширения

8. Очистите базу данных

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

Проверяйте:

  • wp_posts — подозрительные iframe, script, hidden links;
  • wp_options — siteurl, home, active_plugins, виджеты, настройки темы;
  • wp_users — неизвестные пользователи;
  • wp_usermeta — роли и права;
  • таблицы page builder-плагинов;
  • таблицы кеша, если они хранят HTML.

9. Удалите backdoor

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

Частые места:

  • /wp-content/uploads/
  • /wp-content/mu-plugins/
  • /wp-content/cache/
  • /wp-content/plugins/старый-плагин/
  • /wp-content/themes/старая-тема/
  • корень сайта рядом с index.php;
  • временные папки хостинга;
  • старые копии сайта внутри public_html.

10. Проверьте сайт после очистки

После удаления вируса проверьте сайт как обычный пользователь, администратор и поисковый робот.

  • главная страница;
  • записи и страницы;
  • админка;
  • формы обратной связи;
  • корзина и checkout, если есть WooCommerce;
  • sitemap.xml;
  • robots.txt;
  • исходный код страниц;
  • Google Search Console;
  • сканер хостинга.

Код

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

Проверить целостность ядра WordPress через WP-CLI

Куда запускать: SSH в корневой папке сайта.

wp core verify-checksums

Если команда показывает изменённые файлы ядра, замените их чистой версией WordPress.

Показать список администраторов

Куда запускать: SSH через WP-CLI.

wp user list --role=administrator

Показать активные плагины

wp plugin list --status=active

Найти PHP-файлы внутри uploads

Куда запускать: SSH. Команда только показывает файлы, не удаляет их.

find wp-content/uploads -type f ( -name "*.php" -o -name "*.phtml" -o -name "*.php5" -o -name "*.phar" )

Найти подозрительные конструкции в PHP-файлах

Куда запускать: SSH. Это диагностика, а не готовый список вирусов. Иногда похожие строки бывают в нормальных библиотеках.

grep -RIn --include="*.php" "base64_decode|eval(|gzinflate|str_rot13|shell_exec|assert(" .

Запретить выполнение PHP в uploads через .htaccess

Куда вставлять: файл /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);

Обновить security salts

Куда вставлять: 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',       'замените-на-новое-значение');

Результат

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

Хороший результат выглядит так:

  • нет неизвестных администраторов;
  • файлы ядра WordPress чистые;
  • плагины и тема переустановлены из доверенных источников;
  • в uploads нет исполняемых PHP-файлов;
  • в базе нет чужих script, iframe, hidden links и SEO-спама;
  • .htaccess и wp-config.php проверены;
  • пароли и security salts заменены;
  • сканер хостинга не находит заражения;
  • Google Search Console не показывает новых проблем безопасности;
  • сайт не заражается повторно после очистки кеша.

Дополнительные способы

Восстановление из чистого backup

Если есть резервная копия до заражения, это часто самый быстрый путь. Но backup нужно проверять. Если восстановить копию, в которой уже был backdoor, сайт снова заразится.

После восстановления:

  • обновите WordPress, плагины и тему;
  • смените пароли;
  • замените security salts;
  • проверьте пользователей;
  • удалите старые архивы и тестовые копии;
  • проверьте сайт сканером.

Очистка через сканер хостинга

Многие хостинги имеют встроенный антивирус. Он помогает найти заражённые файлы, но не всегда понимает структуру WordPress. После автоматической очистки всё равно проверьте базу, пользователей, wp-config.php, .htaccess и плагины.

Проверка Google Search Console

Если сайт попал в предупреждения Google, после очистки нужно отправить запрос на повторную проверку. Перед этим убедитесь, что вредоносный код удалён, а sitemap не содержит мусорных URL.

Проверка соседних сайтов на хостинге

Если на одном аккаунте хостинга лежит несколько сайтов, заражение может переходить между ними. В таком случае чистить нужно весь аккаунт, а не только одну папку WordPress.

Защита после очистки

После удаления вируса обязательно настройте базовую защиту. Иначе сайт может снова заразиться через ту же уязвимость. Подробный список настроек есть в статье Защита WordPress от взлома: что обязательно настроить.

Частые ошибки

Удалить только найденный вирусный файл

Это временное решение. Если остался backdoor или слабый пароль, вредоносный файл появится снова.

Лечить сайт без backup

При ручной очистке можно случайно удалить нужный файл темы, загрузки, настройки или данные заказов. Backup нужен даже заражённый.

Оставить старые архивы на сервере

Файлы вида backup.zip, old-site.zip, site_old/, test/, copy/ часто содержат старые уязвимые копии сайта. Их нужно убрать из публичной папки.

Скачать тему или плагин из случайного источника

Пиратские архивы часто уже содержат вредоносный код. После такой установки сайт может заразиться сразу.

Не проверять базу данных

Многие чистят только файлы, но вирусные вставки могут храниться в wp_posts, wp_options, виджетах и настройках конструктора страниц.

Не менять пароли после очистки

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

Диагностика проблем

Вирус появляется снова после удаления

  • Проверьте uploads на PHP-файлы.
  • Проверьте mu-plugins.
  • Проверьте cron-задачи WordPress и хостинга.
  • Проверьте неизвестных администраторов.
  • Проверьте соседние сайты на аккаунте хостинга.
  • Замените пароли и security salts.

Сайт редиректит на чужой домен

  • Проверьте .htaccess.
  • Проверьте index.php в корне сайта.
  • Проверьте wp_options: siteurl, home и активные плагины.
  • Проверьте header.php, footer.php и functions.php темы.
  • Проверьте JavaScript в записях и виджетах.

Google показывает предупреждение после очистки

  • Проверьте страницы через Search Console.
  • Очистите кеш сайта и CDN.
  • Проверьте sitemap.xml.
  • Удалите мусорные страницы из индекса через инструменты Google, если нужно.
  • Отправьте запрос на повторную проверку.

Не работает админка после вируса

  • Проверьте debug.log и error_log.
  • Отключите плагины через FTP.
  • Проверьте .htaccess.
  • Проверьте права файлов.
  • Проверьте таблицы wp_users и wp_usermeta.

Если после заражения не открывается wp-admin, используйте инструкцию Не работает админка WordPress: причины и способы восстановления доступа.

Антивирус хостинга удалил файлы, и сайт сломался

  • Проверьте, какие файлы были удалены.
  • Замените ядро WordPress чистой версией.
  • Переустановите плагины и тему.
  • Проверьте debug.log.
  • Восстановите нужные медиа из backup.

Краткие AI-friendly ответы

Как удалить вирус с сайта WordPress?

Сделайте backup, смените пароли, проверьте пользователей, замените ядро WordPress чистой версией, переустановите плагины и тему, удалите вредоносные файлы, очистите базу, проверьте uploads, .htaccess, wp-config.php и закройте уязвимость.

Где чаще всего прячется вирус в WordPress?

Чаще всего вирус находится в wp-content/uploads, plugins, themes, mu-plugins, index.php, .htaccess, wp-config.php, wp_posts и wp_options.

Почему сайт заражается снова?

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

Можно ли удалить вирус плагином безопасности?

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

FAQ

Можно ли удалить вирус с WordPress самостоятельно?

Да, если есть доступ к FTP, базе данных, хостингу и понимание структуры WordPress. Но если сайт коммерческий, есть WooCommerce, личные данные пользователей или предупреждение Google, лучше действовать очень аккуратно.

Нужно ли удалять весь сайт и ставить WordPress заново?

Иногда это самый чистый вариант, но важно сохранить wp-content/uploads, базу данных и нужные файлы темы. Ядро WordPress, плагины и тему лучше заменить чистыми версиями.

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

Можно, если backup точно сделан до заражения. После восстановления всё равно нужно обновить сайт, сменить пароли, проверить пользователей и закрыть уязвимость.

Как понять, что вирус удалён полностью?

Сайт не редиректит, сканеры не находят угроз, в uploads нет PHP-файлов, нет неизвестных администраторов, ядро проходит проверку целостности, база очищена, Google Search Console не показывает новых проблем.

Почему антивирус снова находит заражённые файлы?

Обычно очистили только симптомы. На сайте мог остаться backdoor, вредный cron, заражённый плагин, старая копия сайта или доступ злоумышленника через пароль.

Что делать, если вирус в базе данных?

Нужно искать вредоносные script, iframe, redirect, hidden links и подозрительные опции. Перед правкой базы сделайте экспорт. Массовые SQL-замены без проверки могут сломать контент и настройки сайта.

Как защитить WordPress после удаления вируса?

Обновите WordPress, плагины и тему, удалите лишние плагины, включите 2FA, настройте backup, ограничьте доступ к wp-admin, запретите PHP в uploads, проверьте права файлов и используйте защитный плагин или WAF.

Нужна помощь?

Если сайт WordPress заражён, редиректит посетителей, попал в предупреждения Google или вирус появляется снова после удаления, лучше сначала провести техническую диагностику, а не чистить файлы наугад.

Вывод

Удаление вируса с сайта WordPress — это не одно действие, а полный процесс: backup, диагностика, очистка файлов, проверка базы, замена паролей, удаление backdoor, восстановление доверия поисковых систем и защита от повторного взлома. Если убрать только видимый вредоносный код, причина останется, и заражение может вернуться.

Об авторе

vkuzyomko administrator