Не так давно мне пришлось устранять последствия вирусной атаки на веб-сайт дружественной мне организации. Все началось с того, что первая часть атаки была произведена через уязвимость администраторской панели – был создан пользователь с правами супер-администратора. Используется Joomla 3.6.5.
Атака производилась с удаленного сервера, возможно, также зараженного. После создания супер-пользователя был произведен вход в администраторскую панель и установлен вредоносный плагин – mod_ariimageslidersa. Такое название неслучайно – есть оригинальный, не вредный плагин mod_ariimageslider, но т.к. на этом сайте он отсутствовал, то появление вредоносной версии бросилось в глаза сразу же.
За собой этот плагин подтянул еще два – mod_widgetread_facebook_ и mod_widgetread_twitt. Не совсем понятно, зачем было еще два троянских плагина, т.к. судя по функционалу первый плагин также выполнял нужные создателю вредоносные действия. После атаки сайт начинал перенаправлять посетителей на рекламные площадки, таким образом принося прибыль разработчику.
Суть атаки сводилась к тому, что все три вредоносных плагина, если к ним обратиться напрямую (к их php файлам), начинали создавать множество файлов .htaccess, содержащих перенаправление. Также, в index.php основного шаблона был встроен зашифрованный php-код, который, при обращении к нему, подключался к удаленному серверу, получал содержимое файлов .htaccess и начинал их создавать везде подряд. Код выглядел так:
По итогу, очистка сайта после атаки заняла, примерно, 15 часов, с учетом того, что я искал вредоносный код практически во всех скриптах системы. В итоге, обнаружился он только в шаблоне (/templates/<шаблон>/index.php) и в модулях. Также, чтобы избежать повторного заражения, во время очистки к сайту не производилось никаких обращений, даже в администраторскую панель, поэтому созданного трояном супер-администратора я удалял напрямую из базы данных + с помощью найденного в сети bcrypt хэш генератора поменял пароли для существующих администраторов. Вдобавок, напрямую через БД были удалены модули, перечисленные выше. Удаление множества .htaccess файлов много времени не занимает, если использовать файловый менеджер, который позволяет удалить все найденные через поиск файлы.
Последним действием стала замена уязвимого phpmailer на более новую версию – /libraries/vendor/phpmailer/phpmailer/class.phpmailer.php – RCE : CVE-2016-10045, CVE-2016-10031. Возможно, атака могла быть произведена с помощью этой уязвимости, т.к. она предполагает выполнение удаленного кода на сервере.
По итогу, методом защиты конкретно от этой уязвимости стало создание .htaccess в папке administrator с последующим отказом в доступе к администраторской панели со всех IP, кроме IP реальных администраторов.
Joomla, по идее, является не самой уязвимой системой, но такие случаи бывают. Регулярно выполняйте обновление системы и следите за обновлениями плагинов.