Если сайт начал открывать чужие страницы, показывать рекламу, терять позиции, выдавать ошибки или вести себя по-разному для администратора и обычного посетителя, его нужно проверить на вирусы, редиректы и подозрительный код. Начинать лучше не с удаления файлов наугад, а с резервной копии, проверки пользователей, плагинов, тем, .htaccess, wp-config.php, папки uploads, новых PHP-файлов и отчётов в Search Console.
Вирусы на сайте редко выглядят как большая красная кнопка с надписью «я вирус». Чаще всё начинается тише: одна страница открывается странно, в поиске появляются чужие заголовки, посетителей уводит на казино, в админке появляются непонятные пользователи, а владелец сайта сначала думает, что это «глюк браузера».
Особенно неприятно, когда заражение работает выборочно. Администратор открывает сайт и видит нормальную страницу, а новый посетитель с телефона попадает на рекламный редирект. Или сайт выглядит чистым, но в индексе уже сидят сотни спам-страниц. Вот поэтому проверять нужно не только внешний вид сайта, а файлы, базу данных, пользователей, плагины, серверные правила и поведение страниц в разных условиях.
Если вы подозреваете заражение, главное не устраивать героическое удаление всего подряд. Сначала нужно зафиксировать симптомы, сделать копию, понять источник проблемы и только потом чистить сайт. Иначе можно стереть следы взлома, сломать рабочий функционал и через неделю получить тот же вирус обратно. Весёлый квест, только без приза.
Симптомы
Первый явный симптом: сайт перенаправляет посетителей на чужие домены. Это могут быть страницы с рекламой, фишингом, псевдообновлениями браузера, ставками, казино или странными магазинами. Иногда редирект срабатывает только один раз, только с мобильного устройства, только из поиска или только для новых пользователей.
Второй симптом: в поисковой выдаче появляются чужие страницы. Например, сайт про услуги внезапно начинает ранжироваться по запросам про лекарства, казино, криптовалюту или взломанные аккаунты. На самом сайте этих страниц может не быть видно, но поисковик уже успел их обойти. Владелец смотрит на админку WordPress и говорит: «у меня таких страниц нет». А поисковик отвечает: «а у меня есть».
Третий симптом: браузер или антивирус показывает предупреждение. Это уже серьёзный сигнал. Если Chrome, Яндекс Браузер, антивирус или Search Console сообщают о вредоносном ПО, обманных страницах или проблемах безопасности, нужно разбираться сразу. Такие предупреждения бьют по доверию, заявкам и рекламе.
Четвёртый симптом: сайт стал медленнее, начал выдавать 500 ошибки, неожиданно грузить чужие скрипты или периодически падать. Вредоносный код может создавать лишние запросы, подключать удалённые файлы, генерировать мусорные страницы и нагружать сервер.
Пятый симптом: в WordPress появились неизвестные администраторы, новые плагины, странные задания cron, лишние файлы в теме или непонятные PHP-файлы в uploads. Особенно подозрительно, если файл выглядит как картинка, но внутри лежит PHP-код. Для сайта это примерно как найти в холодильнике гаечный ключ и сделать вид, что так и было.
Если сайт уже явно взломан, лучше отдельно посмотреть, какие действия нужно выполнить в первую очередь: сайт взломали: первые действия.
Почему это происходит
Чаще всего заражение происходит не потому, что «WordPress плохой», а потому что на сайте есть слабое место. Это может быть устаревший плагин, заброшенная тема, простой пароль администратора, лишний доступ у подрядчика, небезопасный хостинг, неправильные права на файлы или старый бэкап, который однажды вернули вместе с вирусом.
Самая частая история: сайт работает годами, плагины не обновляются, тема давно не поддерживается, а владелец заходит в админку раз в месяц посмотреть заявки. Потом один из плагинов получает известную уязвимость, бот находит сайт автоматически и загружает вредоносный код. Никто лично не сидит ночью и не выбирает ваш сайт с бокалом кофе. Всё скучнее и неприятнее: автоматизация.
Ещё одна причина: слабые пароли и лишние администраторы. Если у сайта пять администраторов, два бывших подрядчика, один аккаунт admin, пароль qwerty2024 и вход без дополнительной защиты, то удивляться потом сложно. Можно, конечно, но лучше не надо.
Отдельная проблема: заражение через файлы темы. Вредоносный код часто прячут в functions.php, header.php, footer.php, файлах плагинов, .htaccess, wp-config.php, папке uploads, временных каталогах и файлах с непонятными названиями. Иногда код специально обфусцируют, чтобы он выглядел как бессмысленный набор символов.
Также бывают скрытые редиректы. Они могут быть прописаны не только в файлах сайта, но и в базе данных, настройках плагинов, виджетах, кастомном HTML, JavaScript-коде, рекламных вставках или серверной конфигурации. Поэтому простая переустановка WordPress не всегда решает проблему.
Что проверить в первую очередь
Перед проверкой сделайте резервную копию файлов и базы данных. Да, даже если сайт заражён. Копия нужна не для того, чтобы вернуть вирус обратно, а чтобы не потерять рабочие данные и иметь возможность сравнить состояние сайта. Удалять всё без копии можно только в одном случае: если хочется добавить себе ещё один рабочий день с прекрасным настроением.
Начните с внешней проверки. Откройте сайт в обычном браузере, в режиме инкогнито, с телефона, из другой сети. Проверьте главную страницу, важные посадочные, страницы услуг, статьи и формы. Если редирект проявляется только для новых посетителей, обычный вход под администратором может ничего не показать.
Затем проверьте сайт через Search Console. Важны разделы с проблемами безопасности, ручными мерами, индексированием и странными URL. Если поисковик видит на сайте страницы, которых вы не создавали, это сильный признак заражения или спам-инъекции.
После этого проверьте пользователей WordPress. Удалите неизвестные аккаунты с правами администратора, смените пароли у всех важных пользователей, отключите доступы бывших подрядчиков. Если неизвестный администратор появился сам, проблема уже не косметическая.
Проверьте плагины и темы. Всё, что не используется, лучше удалить, а не просто отключить. Заброшенные плагины, nulled-темы, старые визуальные конструкторы, сомнительные дополнения и «премиум бесплатно скачать без СМС» часто становятся входной дверью. Бесплатный сыр, как обычно, стоит дороже нормальной лицензии.
Дальше проверьте файлы. Особое внимание стоит уделить:
wp-config.php
.htaccess
functions.php
header.php
footer.php
папке wp-content/uploads
папке wp-content/plugins
папке wp-content/themes
файлам с недавней датой изменения
PHP-файлам в местах, где их быть не должно
подозрительным конструкциям вроде base64_decode, eval, gzinflate, str_rot13, длинных нечитаемых строк и подключений к чужим доменам
Важно: сами по себе такие функции не всегда означают вирус. Иногда они используются легально. Но если они появились внезапно, спрятаны в странном файле или находятся в папке загрузок, это повод внимательно разбираться.
Если основной симптом именно перенаправление на чужой домен, пригодится отдельный разбор: подозрительный редирект с сайта.
Как снизить ущерб
Если сайт заражён, сначала ограничьте распространение проблемы. Не нужно сразу публиковать радостный пост «нас взломали, приходите посмотреть». Но и игнорировать ситуацию нельзя.
Поставьте сайт в режим обслуживания, если он уводит людей на опасные страницы или показывает вредоносный контент. Это лучше, чем отправлять посетителей в цифровой подвал с мигающей рекламой. Если сайт принимает заявки, временно отключите формы или проверьте, не уходят ли данные на сторонние адреса.
Смените пароли: WordPress, хостинг, FTP/SFTP, база данных, почта администратора, панель управления хостингом. Если есть подозрение на компрометацию компьютера, с которого заходили в админку, проверьте и его. Иначе можно идеально почистить сайт, а потом снова зайти с заражённого устройства и начать второй сезон сериала.
Обновите ядро WordPress, плагины и темы, но делайте это аккуратно. Если сайт уже заражён, обновление может не удалить вредоносный код. Оно закрывает часть уязвимостей, но не заменяет чистку. Сначала нужно понять, где заражение, затем удалить вредоносные файлы и только после этого укреплять сайт.
Проверьте права на файлы и директории. У сайта не должно быть лишней возможности записывать код куда угодно. Особенно осторожно нужно относиться к wp-config.php, системным файлам и директориям, где должны храниться только медиафайлы.
Проверьте базу данных. Вирусные вставки могут находиться в записях, настройках темы, виджетах, опциях плагинов, пользовательских полях и таблицах с временными данными. Если чистить только файлы, а вредоносный скрипт остаётся в базе, сайт может продолжать заражать посетителей или восстанавливаться после удаления.
После очистки проверьте сайт повторно: из разных браузеров, с телефона, через внешние сканеры, по важным URL, по страницам из поисковой выдачи. Если Google или браузер показывал предупреждения, после реальной очистки нужно отправить сайт на повторную проверку.
Что делать дальше
Если вы нашли один подозрительный файл, это ещё не значит, что нашли всю проблему. Вирусы часто оставляют backdoor, то есть скрытый способ вернуться обратно. Можно удалить видимый редирект, а через день он появится снова. Это не магия, это просто недочищенный сайт.
Нормальная очистка включает поиск источника заражения, удаление вредоносного кода, проверку базы, обновление компонентов, закрытие уязвимостей, смену доступов, настройку базовой защиты и контроль после работ. Иначе получается косметический ремонт после протечки, когда вода всё ещё течёт, но зато обои красивые.
Если сайт рабочий, приносит заявки или используется в рекламе, лучше не экспериментировать с удалением кода наугад. В такой ситуации разумнее заказать лечение сайта от вирусов, чтобы проверить файлы, базу данных, редиректы, пользователей и причины заражения.
Если явных вирусов нет, но есть подозрительные симптомы, падение скорости, странные ошибки, мусорные страницы в поиске или сомнения по техническому состоянию, можно начать с услуги технический аудит сайта. Это помогает понять, где именно проблема: в безопасности, коде, сервере, плагинах, индексации или общей архитектуре сайта.
Главное правило простое: не ограничивайтесь удалением одного найденного файла. Проверка сайта на вирусы должна отвечать не только на вопрос «что удалить», но и на вопрос «как это вообще попало на сайт». Без второго ответа первый почти бесполезен.
Материал подготовлен Максимом Вагизовым для vagizov.com . При цитировании обязательна активная ссылка на источник.
Подробнее об авторских правах