Буквально на днях вышло критическое обновление безопасности Joomla 3.6.4, исправляющее уязвимости CVE-2016-9081, CVE-2016-8869 и CVE-2016-8870. Однако хакеры не дремлют, и сразу после выхода патча изучили дыры и написали ботов для эксплуатации эксплоита. Так что вполне реально, что нас ждут массовые взломы сайтов впереди.
Данные потенциальные угрозы не зря привлекли внимание злоумышленников, в отличие от предыдущих уязвимостей безопасности, в которых понадобятся или дополнительные условия для осуществления атаки либо брешь не предоставляет особой ценности для взлома всего сайта, именно в этот раз все намного серьёзнее. CVE-2016-8869 позволяет зарегистрировать пользователя с повышенными правами, CVE-2016-8870 поможет обойти проблему, если регистрация запрещена - в итоге запрет регистрации не защищал от уязвимости, а на закуску CVE-2016-9081 позволит сменить пароль пользователя либо назначить ему права администратора.
Согласитесь, после создания учетной записи с правами суперпользователя, взлом сайта идёт по давно известному сценарию: загружается через расширения шелл, с помощью которого атакующий получает полный доступ к управлению. Единственной преградой может стать двухэтапная авторизация в админку, именно поэтому данный пункт идёт обязательным в моей установки защиты на сайт. Для тех, кто не знает, про какой вариат я говорю, советую обязательно почитать материал "Защищаем админку Joomla от посторонних посетителей"
Давайте детально рассмотрим, что приводит к таким последствиям. Как я говорил в новости про патч, в релизе джумлы 3.6.4 была удалена из components/com_users/models/registration.php функция регистрации. Давайте глянем более детально код:
$params = JComponentHelper::getParams('com_users');
// Initialise the table with JUser.
$user = new JUser;
$data = (array) $this->getData();
// Merge in the registration data.
foreach ($temp as $k => $v)
{
$data[$k] = $v;
}
Как мы видим, ничего не мешает нам изменить массив данных при регистрации. К примеру, по умолчанию права пользователя соотносятся двумерным массивом, поэтому если составим запрос на уязвимую регистрацию
POST /index.php/component/users/?task=registration.register HTTP/1.1
и в тело запроса добавим строки boundary:
Content-Disposition: form-data; name="user[groups][]"
7
и получим пользователями с правами администратора. Единственное, что при этом нормально фильтровалось и не удастся манипулировать - это активация созданного аккаунта, здесь уже разработчики постарались и обойти не получится.
Поэтому настоятельно рекомендую обновить джумлу 3 до последней версии, если Вы еше этого не сделали и не забудьте защитить админку.
Данный материал предоставлен в ознакомительных целях и не является пособием для взлома. Некоторые данные здесь были специально опущены.