Демонстрационный пример: магазин «ТеплоДом», файлы, даты и цифры вымышленные. Так выглядит отчёт, который получает заказчик после лечения сайта.
Защита и лечение сайта · 1С-Битрикс

Отчёт о лечении сайта от вируса: интернет-магазин отопительного оборудования на 1С-Битрикс

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

1С-Битрикс: Малый бизнесядро было не обновлено больше двух лет
14 находокфайлы, записи в базе, агенты, правила сервера
PHP 7.2 → 8.2после проверки совместимости модулей
Все доступы смененыFTP, база данных, админка, хостинг

Симптомы и итог

С чем обратился владелец сайта и что получилось после работ.

Редирект мобильных посетителей

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

Спам с сервера

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

Предупреждение браузера

В Яндекс Вебмастере появилась отметка об угрозе, браузер показывал страницу «Сайт может быть опасен». Трафик из поиска заметно просел.

14найдено вредоносных элементов
14удалено или исправлено
0расхождений с эталоном ядра после чистки
0угроз в Яндекс Вебмастере после перепроверки

Что нашли

Основные находки (часть однотипных файлов объединена). Пути сокращены, вредоносный код в отчёт не вставляем: он сохранён в архиве для разбора.

ГдеЧто делалКак нашли
/bitrix/php_interface/init.phpПодменён: в начало файла добавлен код, который для мобильных браузеров с переходом из поиска отдавал редиректПроверка целостности сверка с эталоном и история изменений
/.htaccess, /upload/.htaccessПравило перенаправления по User-Agent; в папке загрузок разрешён запуск PHPручной разбор правил сервера
/upload/iblock/3f2/*.php (6 файлов)Веб-шеллы под видом картинок каталога: загрузка файлов и выполнение командпоиск по сигнатурам eval, base64, gzinflate
/bitrix/tools/cache_check.phpСкрипт рассылки спама через почтовую функцию сервераПроверка целостности файла нет в эталоне
/bitrix/modules/main/include/.cfg.phpБэкдор: выполнял код из параметра запроса, восстанавливал удалённые файлыпоиск по сигнатурам и дате изменения
Таблица b_agent: 2 агентаРаз в час заново записывали вредоносный код в init.phpразбор агентов с чужими функциями
Таблица b_module_to_module: 1 обработчикОбработчик события OnEpilog дописывал скрипт в страницы для мобильныхразбор обработчиков событий
Таблица b_user: 1 записьЛишний пользователь в группе администраторов, создан через уязвимостьсверка списка администраторов с владельцем

Вероятный путь заражения: устаревшая версия модуля main с известной уязвимостью и запуск PHP в папке загрузок. Оба закрыты, см. следующий блок.

Что сделали

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

  1. Резервная копия как есть

    Полная копия файлов и базы до любых изменений: для отката и для разбора.

  2. Изоляция

    Страница обслуживания для посетителей, отключена отправка почты с сайта, закрыт доступ к админке по IP на время работ.

  3. Чистка файлов и базы

    Удалены веб-шеллы и скрипт рассылки, восстановлен init.php, удалены агенты, обработчик события и лишний администратор.

  4. Сверка ядра с эталоном

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

  5. Обновление ядра и модулей

    Сначала на копии сайта, затем на рабочем: главный модуль, интернет-магазин, обмен с 1С. Проверены каталог, корзина и оформление заказа.

  6. Переход на PHP 8.x

    PHP 8.2 после проверки шаблона и своих компонентов на совместимость, исправлены устаревшие вызовы.

  7. Смена всех доступов

    Пароли FTP, базы данных, панели хостинга и всех администраторов. Удалены старые FTP-аккаунты подрядчиков.

  8. Проактивная защита

    Включены проактивный фильтр, контроль активности, журнал вторжений, запрет PHP в папке загрузок.

  9. Капча на формах

    Капча на формах обратной связи, регистрации и восстановления пароля, ограничение частоты отправки.

  10. Снятие предупреждений

    Запрос перепроверки в Яндекс Вебмастере, письмо в поддержку хостинга о снятии ограничения на почту.

Проверка до и после

Каждую проверку повторяли после работ. Перепроверка в Яндексе занимает некоторое время, статус в отчёте указан на момент сдачи.

ПроверкаДоПослеКомментарий
Яндекс Вебмастер, «Безопасность и нарушения»угроза найдена✓ угроз нетПерепроверка запрошена и пройдена, отметка снята
Антивирус хостинга9 файлов✓ чистоПолное сканирование аккаунта
Сканер безопасности 1С-Битрикс7 критичных✓ 0 критичныхОстались 2 рекомендации по настройке сервера, переданы хостингу
Проверка целостности ядра23 расхождения✓ совпадаетСверка с эталоном после обновления
Редиректы с телефона (Android, iOS, из поиска)есть✓ нет30 переходов с разных устройств и User-Agent
Исходящая почта с сервератысячи писем✓ только письма сайтаОграничение хостинга снято, письма о заказах доходят
Повторная проверка через неделю—✓ изменений нетКонтроль целостности и журнал вторжений без новых событий

Рекомендации владельцу

Полной защиты не бывает, но эти шаги резко снижают риск повторного заражения и упрощают восстановление.

  • ОбновленияСтавить обновления ядра и модулей раз в месяц, сначала на копии сайта. Большинство взломов идёт через старые версии.
  • БэкапыЕжедневная копия на внешнее хранилище, хранить не меньше 14 копий и раз в квартал проверять восстановление.
  • 2FAДвухэтапная авторизация для всех администраторов через модуль одноразовых паролей.
  • ПраваПрава на файлы 644, на папки 755, запрет PHP в папке загрузок, у подрядчиков отдельные доступы, которые закрываются после работ.
  • МониторингУведомления о новых администраторах и изменении файлов ядра, ежемесячный запуск сканера безопасности.
  • ПаролиНе хранить пароли в переписке, менять при смене подрядчика или сотрудника.