Пошаговая инструкция по очистке WordPress от вредоносного кода, спам-скриптов, SQL-инъекций и шеллов. Включает работу с файлами, базой данных и сервером.
Очистка WordPress от вирусов — это не просто удаление подозрительных файлов. Это комплексная процедура, включающая анализ кода, базы данных, логов и конфигурации сервера. AVOdigital рекомендует поэтапный подход с использованием сканеров и ручного аудита, особенно в местах, где часто прячут backdors: wp-config.php, .htaccess, functions.php активной темы и файлы плагинов.
Как вирусы проникают в WordPress? Типы угроз
Вредоносный код попадает на сайт через:
- Уязвимости в плагинах и темах (особенно старых версий);
- Инъекции через REST API (например, уязвимость в JWT-аутентификации);
- Компрометацию FTP/SFTP-доступа или панели хостинга;
- Вредоносное ПО на локальном компьютере администратора;
- Грубую силу (brute-force) паролей через XML-RPC.
Чаще всего мы встречаем:
- Backdoor в файлах — кодированные PHP-шеллы (например, через
preg_replaceс модификатором /e); - Спам-скрипты — вставки с редиректами на сторонние сайты;
- SQL-инъекции — в базе данных через
wp_optionsилиwp_posts; - Криптомайнеры — скрипты, майнящие Monero в браузере пользователя.
Диагностика заражения: где искать вирусы
Для обнаружения вредоносного кода используем комбинацию автоматических и ручных методов. Важно проверить не только корень сайта, но и системные области.
| Тип угрозы | Где искать | Метод обнаружения |
|---|---|---|
| PHP-шеллы | wp-content/, wp-includes/, корень |
Сканер с сигнатурами (Wordfence, AI-Bolit), поиск base64_decode и eval |
| Спам-редиректы | .htaccess, nginx.conf, functions.php |
Сравнение с эталонными файлами WordPress |
| SQL-инъекции | wp_options, wp_posts, wp_usermeta |
Запросы с CHECKSUM TABLE, поиск скриптов в CLOB |
| Криптомайнеры | Файлы JS, подозрительные iframe | Анализ консоли браузера, детектор CoinHive |
| Вредоносный код в БД | wp_posts.post_content, wp_options.option_value |
SELECT с LIKE по типичным паттернам (%gzinflate%, %eval%) |
Пошаговый чек-лист очистки WordPress от вирусов
- Изолируйте сайт — временно отключите репликацию БД, поставьте режим обслуживания (через файл .maintenance в корне).
- Сделайте резервную копию — бекап всех файлов и базы данных (через WP-CLI или хостинг-панель).
- Обновите пароли — к FTP, базе данных, админке WordPress, всем сервисам (OAuth-токены, API-ключи).
- Запустите сканер — Wordfence CLI (WAF), или AI-Bolit с базой сигнатур Deep-проверки.
- Проверьте критичные файлы вручную:
wp-config.php— на наличие base64-кода или лишних require..htaccess/nginx.conf— на правила редиректа или RewriteRule, перенаправляющие на спам-сайты.functions.phpактивной темы — на подозрительные хуки (add_action('wp_head', ...), замыкания).
- Очистите базу данных:
- Выполните SQL-запросы на поиск вирусов:
SELECT * FROM wp_posts WHERE post_content LIKE '%eval(%'и т.п. - Удалите подозрительные cron-задачи (
DELETE FROM wp_options WHERE option_name LIKE '%cron%' AND option_value LIKE '%http%'). - Проверьте
wp_options.siteurlиhome— они не должны содержать посторонние домены.
- Выполните SQL-запросы на поиск вирусов:
- Проверьте серверное окружение — в настройках Nginx или Apache убедитесь, что нет allow_url_include и других опасных директив. Отключите выполнение PHP в директориях
/wp-content/uploads/через конфиг сервера. - Удалите неиспользуемые плагины и темы — старые версии часто содержат уязвимости. В нашей практике AVOdigital выявляла backdors в давно удалённых плагинах, чьи файлы остались на сервере.
- Обновите всё до последних версий — ядро WordPress, все плагины, темы. Если используете CommerceML для обмена с 1С, убедитесь, что эндпоинт защищён HTTP-авторизацией.
- Настройте Web Application Firewall (WAF) — например, 6TOKEN или Cloudflare с правилами на блокировку SQL-инъекций и XSS.
Как AVOdigital лечит сайты с глубоким заражением
Мы часто сталкиваемся с ситуациями, когда стандартные сканеры пропускают вредоносный код, спрятанный в нестандартных местах. Например, инъекция через REST API с использованием поддельных JWT-токенов или скрытый бэкдор в кэше Redis. Наша методика включает:
- Анализ логов веб-сервера — поиск необычных запросов (POST на
/wp-json/с большими payload, аномальные User-Agent); - Сравнение файлов с эталоном из официального репозитория — хэш-суммы (md5deep) всех файлов ядра, стандартных плагинов;
- Проверка БД на скрытые юзеры — учётные записи с ролью Administrator, созданные через нестандартные эндпоинты (например, через OAuth-авторизацию).
Мы выполняем ручной аудит функций preg_replace и call_user_func в файлах темы — классическое место для backdoor.
Профилактика повторного заражения
- Регулярное обновление всех компонентов.
- Использование нестандартных префиксов таблиц БД (например,
wp_→b3cr_). - Ограничение доступа к REST API (только авторизованным запросам с JWT).
- Отключение XML-RPC, если не используется.
- Хранение
wp-config.phpвыше корня сайта – только для Nginx/PHP-FPM с чётко заданным одиночным точкой входа.
Частые вопросы
- Можно ли вылечить WordPress без удаления всех файлов?
Да, но только если вы уверены, что вирус не затронул системные файлы ядра. Мы рекомендуем использовать штатную загрузку свежей копии WordPress, а затем восстановить только собственные файлы темы, плагинов и uploads. В противном случае риск пропустить backdoor высок. - Как проверить, что сайт чист после очистки?
После всех манипуляций запустите сканер (Wordfence, Sucuri SiteCheck), проверьте логи доступа на наличие аномалий и выполните мониторинг файлов на изменение (например, с помощью интеграции с Git). Мы в AVOdigital дополнительно используем тесты с реальными эксплуатационными сценариями: попытка SQL-инъекции через GET-параметры, проверка XSS. - Что делать, если вирус в базе данных MySQL?
Выполните экспорт БД с заменой подозрительных строк через sed (например,sed -i 's/eval(base64_decode/ /g' dump.sql), затем импортируйте чистый дамп. Убедитесь, что после этого проверены все экранирования и слеши. - Помогает ли установка плагинов безопасности без ручной очистки?
Нет. Плагины безопасности (Wordfence, iThemes Security) могут заблокировать дальнейшие атаки, но не удалят уже существующий вредоносный код. Сначала необходимо провести полную очистку, а затем настроить защиту.