Услуги Создание магазина Доработка Интеграция 1С О компании FAQ Блог Кейсы Отзывы Контакты
А
Автор статьи

Как восстановить OpenCart после взлома: чек-лист действий

Обнаружить, что магазин взломали, — один из самых стрессовых сценариев. Страница перенаправляет на посторонний сайт, в каталоге появились чужие товары, клиенты жалуются на подозрительные письма. В этот момент важно не паниковать и не пытаться «просто удалить вирус» — поверхностная очистка оставляет бэкдоры, через которые злоумышленник вернётся.

В этом руководстве — конкретный порядок действий от изоляции до полного восстановления. Это не инструкция для хакеров, а защитное руководство для владельцев магазинов.

Первые 30 минут: что сделать немедленно

  1. Переведите сайт в режим обслуживания. Через админку OpenCart → Система → Настройки → Режим обслуживания. Если админка недоступна — создайте файл .maintenance в корне или настройте сервер на возврат 503.
  2. Сделайте полный бэкап текущего состояния. Да, именно заражённого. Это нужно для анализа: что именно изменил злоумышленник. Бэкап пригодится для доказательной базы.
  3. Смените все пароли: администратора OpenCart, FTP/SFTP, панели хостинга, базы данных MySQL, всех администраторов, API-ключи платёжных систем.
  4. Проверьте платёжные данные. Если магазин обрабатывает номера карт — проверьте, не внедрены ли скиммеры (вредоносный JS, перехватывающий данные карт).

Поиск вредоносного кода

Злоумышленники прячут вредоносный код там, где его не ожидают. Простой поиск по файлам не даст результата — нужно системное сравнение с чистой версией.

Где искать вредоносный код в OpenCart

МестоЧто искатьКак обнаружить
Корневые PHP-файлыЧужие скрипты, переименованные файлыСравнение с чистой версией OpenCart
image/catalog/PHP-файлы, замаскированные под изображенияfind image/ -name "*.php"
system/storage/Скрытые файлы, PHP в неожиданных директорияхПроверка содержимого всех файлов
catalog/model/Модифицированные модели, перехват данныхDiff с оригинальными файлами
admin/model/Бэкдоры в админкеDiff с оригинальными файлами
.htaccessПеренаправления, блокировкиСравнение с оригинальным .htaccess
БД: oc_settingИзменённые настройки, скрипты в описанияхПроверка таблицы настроек
БД: oc_userСозданные злоумышленником администраторыПроверка списка пользователей

Признаки вредоносного кода

Ищите в файлах следующие паттерны:

  • eval() с закодированными данными — классический способ выполнить произвольный PHP-код.
  • base64_decode() — используется для маскировки вредоносного кода.
  • gzinflate(), gzuncompress() — сжатый код, который распаковывается при выполнении.
  • $_REQUEST, $_POST, $_GET в файлах, где их быть не должно — признак приёма команд от злоумышленника.
  • fsockopen, curl к неизвестным адресам — исходящие соединения к серверам злоумышленника.
  • Неизвестные файлы: shell.php, config.php.bak, install.php.

Как сравнить файлы с чистой версией

  1. Скачайте чистую версию OpenCart вашей версии с официального GitHub.
  2. Используйте инструмент сравнения: diff (Linux/Mac), WinMerge (Windows) или VS Code/PhpStorm.
  3. Сравните все файлы ядра. Обратите внимание на файлы, которые отличаются от оригинала.

Восстановление сайта

Вариант 1: Восстановление из бэкапа (предпочтительно)

  1. Определите дату взлома: проверьте логи сервера, даты модификации файлов.
  2. Найдите последний чистый бэкап до даты взлома.
  3. Разверните бэкап на тестовом сервере (не на боевом!).
  4. Проверьте, что бэкап действительно чистый — иногда взлом обнаруживается не сразу.
  5. Перенесите чистый бэкап на боевой сервер.
  6. Обновите OpenCart и все модули до последних версий.
  7. Смените все пароли (повторно).

Вариант 2: Ручная очистка (если бэкапа нет)

  1. Скачайте чистую версию OpenCart вашей версии.
  2. Замените все файлы ядра (system/, vendor/) чистыми.
  3. Проверьте и очистите catalog/ и admin/ — сравните с оригиналом.
  4. Удалите все подозрительные файлы.
  5. Проверьте базу данных: oc_setting, oc_user, oc_modification.
  6. Очистите oc_modification — там могут быть вредоносные модификации.

После восстановления: усиление защиты

Права доступа к файлам

ОбъектРекомендуемые праваЗапрещённые права
Файлы644777, 755 для конфигов
Директории755777
config.php444666, 777
admin/config.php444666, 777

Защита .htaccess

# Запрет доступа к конфигам
<FilesMatch "config.php$">
  Order deny,allow
  Deny from all
</FilesMatch>

# Запрет листинга директорий
Options -Indexes

# Запрет исполнения PHP в image/
<DirectoryMatch ".*/image/">
  php_flag engine off
  RemoveHandler .php .phtml .php3 .php4 .php5
</DirectoryMatch>

Дополнительные меры

  • Переименуйте директорию admin в нестандартное имя (admin_7x9k2). Отсечёт 99% автоматических ботов.
  • Ограничьте доступ к админке по IP через .htaccess.
  • Установите 2FA для админки OpenCart через модуль.
  • Удалите неиспользуемые модули — каждый модуль это потенциальная точка входа.
  • Обновите OpenCart и все модули до последних версий.

Аварийный чек-лист

  • ☑ Сайт переведён в режим обслуживания
  • ☑ Сделан полный бэкап заражённого состояния
  • ☑ Сменены все пароли: админка, FTP, хостинг, БД, API-ключи
  • ☑ Проверены платёжные данные на скиммеры
  • ☑ Проведено сравнение файлов с чистой версией OpenCart
  • ☑ Найдены и удалены все вредоносные файлы
  • ☑ Проверена база данных (oc_user, oc_setting, oc_modification)
  • ☑ Восстановлен чистый бэкап ИЛИ проведена ручная очистка
  • ☑ OpenCart и все модули обновлены
  • ☑ Права файлов установлены: 644 для файлов, 755 для директорий
  • ☑ config.php защищён (444)
  • ☑ Директория admin переименована
  • ☑ 2FA настроена для админки
  • ☑ Сайт проверён в Google Safe Browsing и Яндекс.Вебмастере

Часто задаваемые вопросы

Как понять, что магазин взломали?

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

Можно ли очистить сайт без бэкапа?

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

Нужно ли сообщать клиентам о взломе?

Если были украдены персональные данные — да, это требование 152-ФЗ. Уведомите Роскомнадзор в течение 72 часов и сообщите пострадавшим клиентам. Если утечки не было — достаточно закрыть уязвимость и усилить защиту.

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

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

Вывод

Восстановление после взлома — это не «удалить вирус и забыть». Это системная работа: изоляция, анализ, восстановление, усиление защиты. Главный урок — регулярные бэкапы и обновления стоят кратно дешевле, чем восстановление магазина после серьёзного взлома. Если бэкапов нет, а магазин крупный — лучше сразу привлечь специалиста по безопасности.

Читайте также

← Предыдущая Как выбрать и настроить домен для интернет-магазина: от регистрации до SSL Следующая → Как настроить доставку в OpenCart: СДЭК, Почта России, самовывоз, курьер

Комментарии (0)

Пока нет комментариев. Будьте первым!

Оставить комментарий

Ваш комментарий появится после проверки модератором.