
Эскалация привилегий аутентифицированного пользователя до администратора через эксплуатацию Uncanny Groups для LearnDash.
Uncanny Groups for LearnDash (uncanny-learndash-group) — это сторонний плагин для LearnDash LMS (sfwd-lms). Плагин позволяет лидерам групп (пользовательская роль LearnDash) управлять пользователями своих собственных групп LearnDash из интерфейса.
Лидеры групп могут добавлять существующих пользователей в свои группы. Существующие пользователи добавляются автоматически (то есть им не нужно принимать приглашения).
Если администратор сайта включил функцию плагина под названием «Allow group leaders to edit users», лидеры групп также могут изменять имена и адреса электронной почты участников своей группы (пользователей). Эта функция отключена по умолчанию.
Лидер группы может изменить адрес электронной почты администратора и тем самым получить доступ администратора, если включена настройка «Allow group leaders to edit users». При использовании в сочетании с CVE-2024-8350 все лидеры групп могут стать администраторами независимо от статуса настройки «Allow group leaders to edit users».
Плагин не проверяет роль существующих участников группы (пользователей) при добавлении их в новые группы. Если включена опция «Allow group leaders to edit users», лидер группы может таким образом получить привилегии администратора на сайте, добавив существующего администратора в свою группу. После добавления существующего администратора в группу лидер группы просто меняет адрес электронной почты администратора и сбрасывает пароль.
Uncanny Owl опубликовала недостаточное исправление (6.1.0.1) 2024-08-26. Уязвимость больше нельзя было использовать для получения роли администратора (за исключением совместно с CVE-2024-8350), но любой лидер группы всё ещё мог стать редактором (или ниже). Должна быть включена опция «Allow group leaders to edit users».
Uncanny Owl опубликовала полное исправление (6.1.1) 2024-09-11.
Лидер группы может изменять контактные данные пользователя из-за отсутствия проверки разрешений в REST API. При использовании в сочетании с CVE-2024-8349 все лидеры групп могут назначить себе привилегии администратора.
Плагин имеет общесайтовую настройку разрешений под названием «Allow group leaders to edit users». Если она включена, лидеры групп могут изменять имена и адреса электронной почты участников своей группы (пользователей). Эта функция отключена по умолчанию.
Однако отключение этой функции просто предотвращает отображение настройки на интерфейсе. Лидер группы всё ещё может отправлять POST-запросы с теми же действиями. Поскольку лидеры групп могут добавлять всех пользователей в свои группы, они также могут изменять имена и адреса электронной почты всех пользователей.
https://example.com/wp-json/ulgm_management/v1/edit_user/?
action=edit-user&group-id={Group ID}&edit-user-id={user ID}&first_name=Lorem&last_name=Ipsum&email={attacker’s email address}
(Идентификатор группы и идентификатор пользователя можно найти как часть содержимого страницы.)
При использовании в сочетании с CVE-2024-8349 все лидеры групп могут назначить себе привилегии администратора.
Uncanny Owl опубликовала недостаточное исправление (6.1.0.1) 2024-08-26. Уязвимость была частично исправлена, но, опять же, только на интерфейсе. Настройка «Allow group leaders to edit users» должна быть включена.
Если в группу лидера входил администратор, лидер группы больше не мог отображать модальное окно для изменения адреса электронной почты администратора. Однако REST API по-прежнему позволял лидеру группы сделать это.
Лидер группы всё ещё мог стать администратором, используя CVE-2024-8350 в сочетании с CVE-2024-8349. Лидер группы должен был сначала добавить редактора в свою группу и захватить учётную запись редактора. Затем лидер группы (теперь редактор) мог добавить администратора из бэкенда LearnDash и изменить адрес электронной почты администратора через REST API Uncanny Groups.
Uncanny Owl опубликовала полное исправление (6.1.1) 2024-09-11.
Uncanny Owl хорошо справилась с отчётами об уязвимостях и устранила их в течение 90-дневного окна ответственного раскрытия.
Администраторам сайта следует знать, что лидер группы A может добавить пользователя, входящего в группу B, без согласия этого пользователя. Это может быть проблемой конфиденциальности и соответствия GDPR, если, например, группа A и группа B являются двумя разными компаниями. Однако это не является уязвимостью, поскольку именно так задумана работа плагина.
Я подал запрос на добавление функции для решения этой проблемы конфиденциальности ещё в 2021 году. Uncanny Owl теперь пересмотрит мой запрос. Затронутые сайты тем временем могут реализовать свои собственные обходные решения, используя фильтр ulgm_gdpr_is_group_leader_allowed и пользовательские переопределения шаблонов интерфейса.