13 августа 2020 года команда Threat Intelligence завершила расследование двух уязвимостей в Advanced Access Manager , плагине WordPress с более чем 100 000 установками, в том числе уязвимость обхода авторизации высокой степени серьезности, которая может привести к эскалации привилегий и захвату сайта.

Исправление было выпущено в версии 6.6.2.

Уязвимость функции обновления профиля

Advanced Access Manager обеспечивает детальный контроль доступа и имеет возможность назначать несколько ролей одному пользователю. Если включен параметр «Поддержка нескольких ролей», плагин уязвим для обхода аутентифицированной авторизации и, в некоторых случаях, для повышения привилегий.

Пользователь с низким уровнем привилегий мог назначить себе новую или переключиться на любую роль с равным или меньшим уровнем пользователя или любую роль, которой не назначен уровень пользователя. Это можно сделать, отправив POST запрос  wp-admin/profile.php с типичными параметрами обновления профиля и добавив в aam_user_roles[] набор параметров к роли, которую они хотели бы использовать.

Это означало, что если была включена настройка «Поддержка нескольких ролей», любой пользователь запускал бы этот метод при обновлении своего профиля. Затем profileUpdate функция проверит, присутствуют ли в aam_user_roles[] параметре какие-либо роли . Если роли присутствовали, затем использовалась get_editable_roles функцию WordPress, чтобы определить, разрешено ли пользователю добавлять данную роль, и, если да, предоставлялась пользователю эта роль без выполнения какой-либо другой формы проверки.

Уязвимость REST API.

Advanced Access Manager также позволяет пользователям входить в систему через REST API WordPress. К сожалению, конечные точки REST aam/v1/authenticateи aam/v2/authenticate были настроены так, чтобы отвечать на успешный вход в систему с копией всех метаданных о пользователе в кодировке json, потенциально раскрывая информацию о пользователях злоумышленнику или пользователю с низкими привилегиями. Это включало такие элементы, как хешированный пароль пользователя, его возможности и роли, а также любые сторонние метаданные, которые могли быть добавлены другими плагинами. Это может включать конфиденциальную информацию о конфигурации, которую злоумышленник потенциально может использовать как часть цепочки эксплойтов. Например, злоумышленник, способный назначить себе пользовательскую роль с помощью предыдущей уязвимости, может просмотреть, какие возможности были ему назначены, что позволит им спланировать следующий этап своей атаки.

В сегодняшнем выпуске мы подробно описали две уязвимости в плагине Advanced Access Manager, включая уязвимость высокой степени опасности, которая может позволить пользователям более низкого уровня повысить свои привилегии. Мы настоятельно рекомендуем как можно скорее обновиться до последней версии плагина Advanced Access Manager, в настоящее время это версия 6.6.2.