Изменены системные файлы WordPress: как проверить и восстановить ядро
ПечатьКоротко: системные файлы WordPress не должны меняться между обновлениями. Если проверка показывает расхождения, исходите из того, что сайт мог быть взломан: просканируйте аккаунт в Imunify360, переустановите ядро через WP Toolkit (или из админки WordPress), затем найдите остальные следы атаки и обновите всё.
О каких файлах речь
Ядро (по-английски core) состоит из папок wp-admin и wp-includes и файлов в корне установки, например index.php, wp-login.php или wp-settings.php. Для одной и той же версии WordPress они одинаковы на любом сайте, поэтому их можно сравнить с оригиналами с wordpress.org. К ядру не относятся wp-config.php, .htaccess и всё содержимое wp-content (темы, плагины, изображения).
Как узнать об изменениях
- В cPanel, в WP Toolkit («WordPress Management»): на странице сайта нажмите Security, затем Check WordPress Integrity и Verify Checksums.
- По результатам Imunify360 (cPanel, раздел Security) или с помощью плагина безопасности, который сверяет файлы.
- Если Вы работаете по SSH: команда
wp core verify-checksumsв папке сайта.
Откуда берутся расхождения
| Причина | Как часто | Что это значит |
|---|---|---|
| Вредоносный код, спрятанный злоумышленником | Чаще всего | Сайт взломан, нужно очистить его и найти, как туда попали |
| Ручная правка разработчиком | Редко | Плохая практика: правки пропадут при первом же обновлении |
| Прерванное обновление | Иногда | Часть файлов осталась от старой версии; переустановка это исправит |
План действий
Шаг 1. Сохраните следы и просканируйте аккаунт
Пока не восстанавливайте резервную копию и ничего не удаляйте: следы атаки помогают найти причину. JetBackup хранит копии в ротации 30 дней, так что время есть. Откройте Imunify360 в cPanel и изучите результаты. Если найдены заражённые файлы, начните с них: Уведомление Imunify о заражённых файлах.
Шаг 2. Верните оригинальное ядро
Переустановка заменяет системные файлы чистой копией для Вашей версии WordPress. Записи, темы, плагины и база данных при этом не меняются.
- Через cPanel (рекомендуем): WP Toolkit, страница сайта, Security, затем Reinstall WordPress Core после проверки контрольных сумм. Работает, даже если вход в wp-admin недоступен.
- Через WordPress: Dashboard, затем Updates, кнопка Re-install version. Она есть, даже если у Вас уже последняя версия.
После переустановки запустите проверку ещё раз: расхождений быть не должно.
Шаг 3. Найдите, что ещё оставил злоумышленник
Переустановка ядра не очищает wp-content. Поэтому проверьте:
- Раздел Users с фильтром Administrator: удалите незнакомые учётные записи и смените пароли настоящих.
- PHP-файлы в
wp-content/uploads. Там хранятся только изображения и документы, поэтому любой PHP-файл в этой папке подозрителен. - Плагины и темы, которые Вы не устанавливали.
wp-config.phpи.htaccess: сравните с тем, что было раньше. Правильный образец есть в статье Настройка файла .htaccess для популярных CMS.- Пароли: администратора WordPress, cPanel, FTP и базы данных.
Шаг 4. Закройте лазейку
Обновите WordPress, все плагины и темы. Если у какого-то расширения была опубликованная уязвимость, скорее всего, взлом произошёл именно через него: Уязвимость в плагине или теме WordPress. Дополнительно отключите редактор файлов в админке строкой define( 'DISALLOW_FILE_EDIT', true ); в wp-config.php.
Когда обращаться в поддержку
Если Вы не уверены, что именно изменилось, или проблема возвращается, откройте тикет, прежде чем переустанавливать сайт целиком. Мы поможем выбрать копию JetBackup, сделанную до изменений. Восстановить её можно и самостоятельно: Как восстановить сайт или отдельные файлы через JetBackup 5.