Безопасность Joomla: разбор типичных атак
Взлом Joomla чаще начинается не с редкой уязвимости, а с устаревшего расширения, украденной учётной записи или случайно открытой резервной копии. Разбираем цепочки атак и проверки, которые стоит поставить на поток.

Взлом Joomla чаще начинается не с «сложной атаки», а с одной из трёх вещей: устаревшего расширения, украденного пароля администратора или файла резервной копии, доступного из браузера. На Joomla 5.x и поддерживаемых ветках Joomla 4.x набор защитных механизмов уже достаточно широк, но он не спасает, если обновления устанавливаются вручную раз в год, права выдаются всем подряд, а журналы никто не смотрит. Ниже — разбор типичных цепочек атак, их первых признаков и проверок, которые можно внедрить без перестройки сайта.
Как обычно выглядит атака на Joomla
Атакующий редко начинает с попытки «взломать Joomla целиком». Сначала он ищет самый дешёвый вход: известную уязвимость расширения, повторно использованный пароль или забытый служебный файл. После этого задача меняется: получить права администратора, загрузить свой код, изменить страницы или использовать сайт для рассылки и перенаправлений.
Для владельца сайта это важно по одной причине: разные входы требуют разных мер. Смена пароля не исправит уязвимое расширение, а обновление CMS не закроет доступ к учётной записи, которую уже украли.
Безопасность Joomla — это не одна настройка, а цепочка: поддерживаемая версия, проверенные расширения, ограниченные права, MFA, резервные копии и наблюдение за изменениями.
Что атакующий пытается получить
- доступ к панели администратора;
- возможность выполнять или загружать файлы на сервер;
- доступ к базе данных и конфигурации сайта;
- контроль над страницами, формами, пользователями и ссылками;
- ресурс для спама, фишинга, редиректов или дальнейших атак.
Бэкдор1 — скрытый способ сохранить доступ к сайту после удаления первоначальной уязвимости или смены пароля. Он может находиться не в ядре Joomla, а в файле шаблона, плагине или другом загруженном компоненте.
Атака через устаревшее расширение
Это один из самых практичных сценариев: уязвимость обнаружили в стороннем компоненте, а сайт продолжает работать на старой версии. Атакующий сканирует публичные признаки расширения и отправляет запрос, который использует известную ошибку. Иногда ему не нужны учётные данные: достаточно доступной страницы или обработчика формы.
Почему ядро Joomla не закрывает проблему
Ядро и сторонние расширения обновляются разными командами. Исправление в Joomla не устраняет ошибку в компоненте интернет-магазина, конструкторе форм или шаблоне. Поэтому список расширений нужно вести отдельно от версии CMS.
Проверяйте:
- версию Joomla в панели администратора и наличие доступных обновлений;
- страницу разработчика каждого компонента, модуля, плагина и шаблона;
- дату последнего релиза и наличие официального канала уведомлений о безопасности;
- расширения, которые больше не используются, но остаются установленными;
- совместимость обновления с PHP, шаблоном и другими компонентами на копии сайта.
Удаление отключённого расширения безопаснее, чем простое выключение: его файлы всё ещё могут оставаться на сервере. Перед удалением сохраните резервную копию и проверьте, что компонент не используется другими частями сайта.
Атака на учётные записи администратора
Если пароль администратора повторяется на почте, хостинге или другом сервисе, Joomla становится последним звеном в уже проигранной цепочке. Другой вариант — перебор паролей по странице входа. Даже когда CMS не содержит уязвимости, украденная учётная запись позволяет менять материалы, создавать пользователей и устанавливать расширения с административными правами.
Что снижает риск
- Включите многофакторную аутентификацию. В Joomla 5.x проверьте настройки MFA для собственной учётной записи и отдельно — возможность сделать её обязательной для администраторов. После настройки заранее сохраните резервный способ восстановления, иначе можно потерять доступ вместе с устройством.
- Удалите лишних пользователей. У бывших сотрудников и подрядчиков не должно оставаться активных учётных записей. Общий логин администратора лишает вас нормальной атрибуции действий.
- Сократите права. Редактору материалов не нужны права суперпользователя. Выдавайте минимальную роль, достаточную для конкретной работы.
- Проверьте почту восстановления. Если злоумышленник контролирует привязанную почту, смена пароля Joomla не решает проблему.
- Посмотрите журнал входов. Несколько успешных входов из непривычной страны, новый пользователь или изменение группы важнее, чем просто большое число неудачных попыток.
Ограничение доступа к панели по IP может помочь, если администраторы работают из фиксированной сети, но для мобильных сотрудников и подрядчиков оно часто создаёт больше операционных проблем. Не воспринимайте такой фильтр как замену MFA и уникальным паролям.
Загрузка файлов, XSS и внедрение кода
Формы загрузки — опасная граница между пользовательскими данными и файловой системой. Ошибка возникает, когда сайт проверяет только расширение имени файла, хранит загрузки внутри исполняемой директории или позволяет непроверенному пользователю менять содержимое шаблона.
Межсайтовый скриптинг, или XSS2, позволяет внедрить в страницу сценарий, который выполнится в браузере другого посетителя. Для Joomla это может означать кражу данных сессии, подмену формы или выполнение действий от имени администратора, если вредоносное содержимое попало в административный интерфейс.
| Поверхность атаки | Типичный признак | Что проверить | Цена ошибки |
|---|---|---|---|
| Расширения | Неизвестные файлы, редиректы, странные запросы | Версии, источник, обновления и история изменений | Выполнение кода или полный захват сайта |
| Администраторы | Новый пользователь, вход из необычной сети | MFA, роли, почту восстановления, журнал действий | Изменение контента и установка вредоносного расширения |
| Загрузки | Файлы с неожиданными расширениями и датами | Типы файлов, права каталогов, размещение вне исполняемой области | Запуск загруженного кода |
| Шаблон и контент | Скрытые ссылки, всплывающие окна, редиректы | Изменения файлов и HTML, права редакторов | XSS, фишинг и заражение посетителей |
| Резервные копии | Архив открывается по прямому URL | Расположение, права и запрет публичного доступа | Утечка базы, паролей и конфигурации |
Резервные копии и неправильные права
Даже без выполнения кода атакующему достаточно скачать конфигурацию или архив сайта. В резервной копии могут находиться база данных, адреса почты, хеши паролей, содержимое заказов и настройки подключения. Архив с «неподходящим» расширением не становится безопасным: если веб-сервер отдаёт его по URL, данные уже утекли.
Проверьте следующие места:
- корень сайта и каталоги загрузок;
- папки, куда сохраняются архивы резервного копирования;
- временные каталоги и файлы после миграции;
- тестовые копии, поддомены и старые версии сайта;
- доступы к базе данных и FTP/SFTP, записанные в конфигурации.
Резервная копия должна храниться отдельно от публичной директории и проверяться восстановлением. Архив, который ни разу не открывали на чистом стенде, нельзя считать рабочей копией: он может быть неполным, повреждённым или несовместимым с текущей версией PHP и Joomla.
Что ломается первым при расследовании
Чаще всего расследование останавливается на вопросе «какой файл изменили». Одного файла недостаточно. Нужно восстановить последовательность: какой пользователь или запрос получил доступ, какие права были у процесса, что изменилось после этого и сохранился ли доступ.
Минимальный порядок проверки
- Переведите сайт в режим обслуживания, если продолжается редирект, спам или изменение страниц.
- Сохраните копию текущих файлов, базы и журналов до очистки. Иначе вы уничтожите следы атаки.
- Сравните ядро, шаблон и расширения с чистыми дистрибутивами от официальных разработчиков.
- Проверьте пользователей, группы, дату последнего входа и недавние изменения.
- Смените пароли Joomla, базы данных, хостинга, почты и SFTP с доверенного устройства.
- Удалите неизвестные расширения и файлы только после фиксации их расположения и времени изменения.
- Восстановите сайт из копии, созданной до инцидента, затем обновите компоненты и проверьте логи.
Если сайт используется для заказов, личных кабинетов или платежей, не ограничивайтесь удалением вредоносного файла. Нужно оценить, какие данные могли быть прочитаны, и отдельно проверить сервер, панель хостинга и почтовые ящики.
Где типовые меры не срабатывают
«Мы спрятали страницу входа». Это уменьшает число случайных запросов, но не защищает от украденной учётной записи и не исправляет уязвимый компонент.
«Мы отключили расширение». Файлы могут остаться на сервере, а уязвимый обработчик — продолжить быть доступным в зависимости от реализации расширения. Неиспользуемые компоненты лучше удалить после резервного копирования.
«Мы восстановили старую копию». Если причина атаки осталась, сайт снова будет скомпрометирован. После восстановления нужно закрыть исходный вход и сменить секреты.
«Антивирус сказал, что всё чисто». Сканер может не распознать изменённый легитимный файл, новую уязвимость или скомпрометированную учётную запись. Сопоставляйте результаты сканирования с журналами и эталонной копией.
Что проверять раз в месяц
- доступные обновления Joomla и всех расширений;
- список администраторов и пользователей с повышенными правами;
- состояние MFA и почты восстановления;
- изменения файлов ядра, шаблонов и загрузок;
- работоспособность резервной копии через тестовое восстановление;
- входы в панель, ошибки веб-сервера и необычные всплески запросов.
Что делать дальше
Начните не со сканера, а с инвентаризации: запишите версию Joomla, PHP, список расширений, пользователей с административными правами и расположение резервных копий. Затем включите MFA, удалите лишние компоненты и настройте отдельное хранение архивов. На продакшене следите минимум за успешными входами администраторов, изменениями файлов и ошибками веб-сервера. Если обнаружили признаки взлома, сначала сохраните доказательства и ограничьте доступ, а уже потом начинайте очистку.
1 Бэкдор — скрытый механизм доступа к системе, который позволяет вернуться после первоначального взлома.
2 XSS (Cross-Site Scripting) — внедрение сценария в страницу, который выполняется в браузере посетителя или администратора.
Логотип и фирменный стиль: Три концепции разного характера, палитра с обоснованием, проверка на читаемость в малом размере и в один цвет.
Спросить за 60 ₽Источники: Joomla Security Centre, Joomla Documentation: Security Checklist
Частые вопросы
Достаточно ли обновить Joomla, чтобы закрыть взлом?
Как понять, что Joomla уже взломали?
Можно ли оставить отключённое расширение на сайте?
Что делать, если я не успел включить MFA и пароль уже украли?
Поможет ли скрытый URL панели администратора?
Как безопасно проверить резервную копию?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.