Почтовый спам — поиск и устранение уязвимости на примере Joomla


Сегодня с дата центра пришло сообщение, с жалобой на спам-абузы поступающие от spam-cop.net — соответственно, жалоба на почтовый спам с сайта одного из моих клиентов.
Сайт висит на выделенном виртуальном сервере, с выделенным IP адресом на котором хостится один единственный сайт — интернет-магазин под управлением Joomla CMS + virtuemart.
Механизм поиска уязвимости описанный ниже можно применять независимо от системы управления — главное понять, что за скрипт рассылает, а далее уже пофиксить это дело.

Первое, что я сделал — это в php.ini
добавил 2 строчки:

и перезапустил веб-сервер (не забываем вернуть назад, после разбора полётов)

Далее, через некоторое время в /var/log/php.mail.log я увидел, что рассылка ведётся из скрипта /libraries/phpmailer/phpmailer.php
Проанализировав время логов из этого файла и логов самого веб-сервера, вижу частые обращения по адресу /index.php?options=com_contact&id=1

Для того, чтобы понять откуда именно вызывается отправка сообщений в phpmailer.php я встроил в него собственное логирование

Анализ этих логов уже на 100% подтвердил, что проблема именно в компоненте com_contact, в который я встроил проверку — чтобы только авторизованные пользователи могли работать с этим компонентом (тут ключевой момент — вызов debug_backtrace() который показывает всю вложенность на уровне функций и самих скриптов

после чего спам прекратился

PS
Данное решение я применил, по аналогии с решением для компоненты com_mailto (которое тоже внедрил, на всякий случай)

которое я чуток переделал (см.выше), т.к. у меня ругался на метод JFactory::getUser()->authorise() который видимо с 3й версии в джумле …

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

Проверить можно по ссылке
http://ваш-сайт/index.php?page=shop.recommend&product_id=1&pop=1&tmpl=component&option=com_virtuemart&Itemid=1&vmcchk=1&Itemid=1

Фиксится добавлением редиректа на морду в начале файла /administrator/components/com_virtuemart/html/shop.recommend.php


Один комментарий на «“Почтовый спам — поиск и устранение уязвимости на примере Joomla”»

  1. Вы уверены, что ровно того же эффекта нельзя было добиться, не хакая системные файлы Joomla, а всего лишь изменив настройки доступа к компоненту в панели управления? Кроме того, «частые обращения по адресу /index.php?options=com_contact&id=1» не говорят ли о каких-то заведомо неверных настройках Joomla, а?

    Прочел данный спич — трендец, нет слов. «com_contact, в который я встроил проверку — чтобы только авторизованные пользователи могли работать». Почему бы не сделать то же самое, переключив соответствующий триггер доступа в админке? Ну, уж коль скоро у гениального прогера пришла фантазия запретить напрочь доступ пользователям категории public, так чего ж. ))

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *