Сайт постоянно взламывают: как найти бэкдор и закрыть вход

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

Содержание
  1. Почему ломают снова
  2. Проверьте сайт сейчас
  3. Что такое бэкдор
  4. Как найти бэкдор
  5. Почему антивирус молчит
  6. Как закрыть вход
  7. Joomla или WordPress
  8. Когда звать специалиста

Почему сайт ломают снова и снова

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

  • Убрали видимое заражение (редирект, спам-страницы), но не тронули механизм, который его создаёт.
  • Остался бэкдор: файл или фрагмент кода, дающий злоумышленнику доступ в обход пароля.
  • Не закрыли уязвимость, через которую зашли в первый раз, поэтому могут зайти снова.

Убрать заражение и закрыть вход это две разные работы. Без второй сайт ломают снова тем же способом, часто в тот же день.

Проверьте сайт прямо сейчас

Инструмент откроет ваш сайт снаружи так, как его видят поисковый робот и посетитель с телефона. Активное заражение, редирект и клоакинг будет видно сразу, а заодно устаревшую версию CMS, через которую обычно и заходят. Доступ к сайту не нужен.

Проверяю: дефейс, мобильный редирект, клоакинг, версию CMS и её актуальность.

Проверяю сайт снаружи...

Что такое бэкдор и где он прячется

Бэкдор это скрытая точка входа, оставленная после взлома. Найти её сложно, потому что она маскируется. Типичные места:

  • Веб-шелл: отдельный .php-файл со случайным именем в папке uploads, media или в кэше.
  • Вставка в легальный файл: одна строка в index.php, functions.php или файле шаблона, часто через eval(base64_decode(...)).
  • Файл-картинка: .php, замаскированный под изображение или иконку.
  • В базе данных: код в параметрах шаблона или в записях, выполняется при загрузке страницы.
  • Задача cron: восстанавливает удалённые файлы по расписанию.
  • Левый администратор в CMS или новый владелец в Search Console.

Как найти бэкдор

Порядок, который реально находит скрытый вход:

  1. Сравните файлы с заведомо чистой копией CMS: всё лишнее под подозрением.
  2. Отсортируйте файлы по дате изменения: заражённые обычно менялись в одно время.
  3. Поищите по коду подозрительные функции: eval, base64_decode, gzinflate, assert, preg_replace с модификатором e.
  4. Проверьте папки, где .php быть не должно: uploads, images, media.
  5. Проверьте задачи cron и список администраторов CMS.
  6. В базе проверьте параметры шаблона и служебные записи на сторонний код.

Почему антивирус хостинга его не находит

Очень частая ловушка: хостинг пишет «всё чисто», а сайт продолжают ломать. Причин две. Первая: антивирус ищет файлы по известным сигнатурам, а бэкдор либо обфусцирован (зашифрован), либо выглядит как легальный код. Вторая: часть механизма лежит в базе данных или в задаче cron, а не в файлах. Файлы при этом честно чистые, сканер честно это и показывает.

Поэтому «хостинг сказал, что всё в порядке» не значит, что бэкдор убран. Проверять надо и обфусцированный код, и базу, и cron, а не только сигнатуры в файлах.

Как закрыть вход навсегда

Чтобы сайт перестали ломать, мало убрать бэкдор. Нужно закрыть саму дверь:

  • Найдите точку входа по логам сервера: через какое расширение или уязвимость зашли.
  • Обновите CMS и все расширения до поддерживаемых версий, удалите неиспользуемые.
  • Смените все пароли и ключи: админка, FTP и SSH, база, панель хостинга, секретные ключи CMS.
  • Проверьте, что не осталось других бэкдоров и задач cron.
  • Ограничьте доступ к админке, включите базовую защиту и настройте чистые резервные копии.

Если сайт на Joomla или WordPress

Joomla. Особенно уязвима Joomla 3: без обновлений безопасности с 17 августа 2023 года. Заходят через расширения (JCE, SP Page Builder) или фреймворк Helix3, а бэкдор прячут в папке media или в параметрах шаблона в базе. Без перехода на версию 5 или 6 сайт заражают снова.

WordPress. Проверьте папку wp-content (плагины mu-plugins, папку uploads на .php), файл wp-config.php, functions.php активной темы и таблицу wp_options. Чаще всего вход остаётся через заброшенный или уязвимый плагин.

Когда звать специалиста

Есть смысл не терять время самому, если:

  • вы уже чистили сайт два и более раз, а заражение возвращается;
  • бэкдор не находится, а сайт снова и снова заражают;
  • код обфусцирован или лежит в базе, и антивирус хостинга молчит;
  • хостинг заблокировал аккаунт за вредоносное ПО;
  • рабочей чистой резервной копии нет.

Нахожу и убираю бэкдоры на любой CMS и закрываю точку входа, чтобы сайт перестали ломать, а не просто чищу симптом. Диагностика бесплатная. Работаю с владельцами сайтов из Украины, Польши и с русскоязычными в ЕС. С юридическими лицами, зарегистрированными в России, не работаю: это ограничение санкций ЕС.

Подробнее и заявка

Частые вопросы

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

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

Что такое бэкдор простыми словами?

Это скрытая дверь, оставленная после взлома. Через неё злоумышленник заходит в обход пароля и снова заражает сайт. Бэкдор маскируется под обычный файл или прячется в базе, поэтому его трудно найти вручную.

Антивирус хостинга ничего не находит. Значит, бэкдора нет?

Нет. Антивирус ищет по сигнатурам, а бэкдор обычно обфусцирован или выглядит как легальный код, плюс часть механизма может быть в базе данных или в cron. Тишина сканера не доказывает, что сайт чист.

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

Только если копия заведомо чистая и вы знаете дату заражения. Часто бэкдор залили за недели до того, как заметили взлом, и бэкап уже с ним. И главное: откат не закрывает уязвимость, поэтому сайт перезаражают.

Как понять, через что зашли на сайт?

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

Telegram