Компания Wordfence обнаружила уязвимость в плагине WP Maps Pro, который насчитывает более 15 000 продаж. С помощью данной бреши неавторизованные злоумышленники могли создавать новые аккаунты администратора на затронутых сайтах, что вело к полному захвату сайта.
Обнаружил уязвимость и ответственно сообщил о ней Дэвид Браун, за что получил вознаграждение в размере 1 950 долларов по программе Wordfence Bug Bounty.
Мы настоятельно рекомендуем пользователям как можно скорее обновить свои сайты до последней исправленной версии WP Maps Pro, версии 6.1.1 на момент публикации.
Плагин WP Maps Pro для WordPress уязвим к повышению привилегий через создание аккаунта администратора во всех версиях, вплоть до 6.1.0 включительно.
Технический анализ
WP Maps Pro — это плагин для WordPress, позволяющий владельцам сайтов встраивать кастомизируемые карты Google Maps с маркерами, категориями и расширенными функциями определения местоположения. В рамках инструментов поддержки плагин предоставляет функцию «временного доступа», предназначенную для того, чтобы сотрудники службы поддержки поставщика могли войти на сайт клиента при необходимости устранения неполадок.
Анализ кода показывает, что плагин использует функцию wpgmp_temp_access_ajax_callback() из класса WPGMP_Google_Maps_Pro для обработки генерации временного доступа.
Хотя эта функция защищена проверкой на наличие одноразового числа (nonce), к сожалению, его могут получить неавторизованные пользователи. Кроме того, в уязвимой версии отсутствовала проверка прав доступа. Это позволяет неавторизованным злоумышленникам инициировать AJAX-действие.
Затем вызывается функция wpgmp_temp_access_support() из класса WPGMP_Temp_Access, которая создает пользователя-администратора.
Если запрос выполняется с параметром check_temp, установленным в false, функция создает нового пользователя WordPress через wp_insert_user() с ролью администратора, случайно сгенерированным юзернеймом и фиксированным адресом электронной почты support@flippercode.com. Затем функция генерирует «магический URL-адрес для входа» с помощью generate_login_link(), сохраняет его в качестве метаданных пользователя и возвращает в теле ответа.
Когда злоумышленник переходит по этому URL-адресу, плагин вызывает функцию wp_set_auth_cookie() для полной аутентификации посетителя как недавно созданного администратора, без необходимости ввода пароля или какой-либо дополнительной проверки. В результате злоумышленник получает полный контроль над сайтом на уровне администратора и может устанавливать вредоносные плагины, изменять темы оформления, внедрять бэкдоры, похищать данные или развертывать веб-оболочки для постоянного доступа.
Как и в случае со всеми уязвимостями повышения привилегий, это может привести к полной компрометации сайта.
В патче 6.1.1 разработчик устранил эту проблему, добавив проверку возможности current_user_can( ‘manage_options’ ) в функцию wpgmp_temp_access_ajax_callback(), которая ограничивает доступ к эндпоинту только для авторизованных админов.
Источник: https://www.wordfence.com
