Хостинг предупреждал, но мы не слушали — как игнор уведомления привёл ко взлому Joomla
Как всё начиналось
Сайт клиента работал на Joomla — популярной CMS, которая при правильном обслуживании вполне безопасна. Но проблема в том, что безопасность Joomla напрямую зависит от своевременности обновлений. И ядра, и расширений.
Уязвимость была в плагине JCE Editor — мощном WYSIWYG-редакторе, который стоит почти на каждом втором Joomla-сайте. Версия 2.9.4 содержала критическую уязвимость, позволяющую злоумышленнику выполнять произвольный PHP-код на сервере. Beget, как и многие хостинги, автоматически сканирует CMS на такие уязвимости. Хостинг прислал предупреждение: «обновите JCE Editor, иначе риск взлома».
Что случилось через неделю
Новое письмо от хостинга было уже не предупреждением, а блокировкой. В папке сайта обнаружен подозрительный файл 2b9ce571265e.php — типичный троян-загрузчик. Но этим не ограничилось. Полная диагностика показала, что заражение оказалось гораздо масштабнее: по всему сайту было разбросано 9 webshell-файлов.
Злоумышленники использовали уязвимость JCE Editor, чтобы загрузить на сайт несколько бэкдоров. Часть из них были простыми PHP-шеллами, часть — маскировалась под системные файлы Joomla. Один из найденных файлов даже назывался p.php — в духе «а вдруг не заметят».
Последствия
Beget отключил возможность отправки почты с домена — сайт использовался для массовой спам-рассылки. Тысячи писем ушли от имени клиента, что ударило по репутации домена и могло привести к блокировке сайта полностью.
Кроме того, хостинг пригрозил полным удалением аккаунта при повторном инциденте. Ситуация была критической: нужно было не просто удалить малварь, а гарантированно закрыть все дыры и убедиться, что атака не повторится.
Что сделали для восстановления
- Диагностика — полное сканирование файловой системы, найдено 9 webshell-файлов в корне сайта, в папках libraries, components и других директориях. Проверены все изменённые за последние дни файлы
- Зачистка — все заражённые файлы удалены, сайт откачен до ближайшего чистого бэкапа. Проверено отсутствие скрытых инклудов и изменений в чистых файлах
- Обновление JCE Editor — 2.9.4 обновлён до 2.9.99.6 (актуальная версия). Критическая уязвимость закрыта
- Блокировки .htaccess — закрыт доступ к уязвимым директориям (libraries, logs, cache, layouts). Сменён пароль базы данных MySQL
- Исправление профиля редактора — в JCE восстановлен профиль, настроена токен-проверка, убраны лишние разрешения для неадминистраторов
- Смена всех паролей — доступы к админке Joomla, FTP, SSH, БД — всё новое, сложное, уникальное
- Снятие блокировки — после полной чистки подали заявку хостингу на разблокировку почты. Через несколько часов сайт снова мог отправлять письма
Выводы
Хостинг Beget предупреждает об уязвимостях не просто так. Уведомления о критических проблемах — это не спам, а реальная помощь. Если видите такое письмо — не откладывайте на «потом». Обновление плагина занимает 5 минут. Чистка взломанного сайта — от нескольких часов до дней.
Главный урок этой истории: профилактика дешевле лечения. Своевременное обновление JCE Editor заняло бы 5 минут. Итог: 9 webshell-файлов, заблокированная почта, испорченная репутация домена и часы работы по восстановлению.
Частые вопросы
Попали в такую же ситуацию?
Я помогаю с чисткой и восстановлением взломанных сайтов на Joomla и WordPress. Разбираюсь в безопасности, знаю Beget, Timeweb, Reg.ru. Пишите — разберёмся.