• XSS.stack #1 – первый литературный журнал от юзеров форума

Баг в WordPress и RCE уязвимость в плагине WooCommerce приводят к полному взлому сайта

admin

#root
Администратор
Регистрация
12.11.2004
Сообщения
7 140
Решения
1
Реакции
10 004
Специалисты компании RIPS Technologies обнаружили проблему, связанную с работой WordPress и популярного e-commerce плагина WooCommerce, созданного фирмой Automattic. Согласно статистике, это решение было загружено более 4 миллионов раз и насчитывает примерно столько же активных установок.

Исследователи объясняют, что проблем здесь сразу две. Первая проблема заключается в том, что когда для WordPress устанавливается плагин, в котором используются разные роли для пользователей, он не создает собственную систему аутентификации, но использует существующую систему привилегий CMS. Для этого плагин создает новую роль с новыми возможностями WordPress, а затем ограничивает ее взаимодействие с настройками CMS и другими пользователями посредством собственных функций.

Так, при установке WooCommerce создается новая роль Shop Manager («менеджер магазина»), которая имеет права edit_users. Это разрешение позволяет пользователю редактировать любые посты, а также профили любых других пользователей WordPress, включая администратора.

Казалось бы, разработчики WooCommerce предусмотрели функцию, запрещающую пользователям с данной ролью вмешиваться в профили администраторов. Но из-за недочета в работе системы управления привилегиями плагинов, при отключении WooCommerce ограничивающая «менеджеров магазина» функция перестает действовать, и пользователи с этой ролью могут свободно редактировать учетные записи других пользователей.

В итоге единственным надежным способом отключения плагина становится его отключение со стороны администратора, а лучше удаление всех его файлов. И здесь в дело вступает вторая проблема.

Дело в том, что аналитики RIPS Technologies обнаружили баг, связанный с удалением файлов WooCommerce версии 3.4.5 и ниже. Оказалось, что пользователи с правами Shop Manager могут удалить любой файл плагина, включая критически важные для его работы. После этого плагин предсказуемо перестанет работать, WordPress автоматически отключит его, и ситуация вернется к вышеописанному, когда пользователь с ролью Shop Manager имеет возможность редактировать профили любых пользователей.

Исследователи объясняют, что в такой ситуации для атакующего не составит труда захватить аккаунт администратора, а значит и контроль над всем сайтом. Видео ниже демонстрирует сочетание двух описанных проблем в деле.


Специалисты подчеркивают, что для успешной эксплуатации данной схемы, атакующему понадобится иметь доступ к аккаунту с ролью Shop manager. Однако это, по мнению исследователей, достижимо посредством XSS-уязвимостей или фишинговых атак.

Разработчики WooCommerce уже устранили проблему, выпустив новую версию плагина (3.4.6).

Технические моменты уязвимости:
Пользователь вызывает другого пользователя при помощи current_user_can()
PHP:
$target_user_id = $_GET['target_user_id'];
if(current_user_can('edit_user', $target_user_id)) {
    edit_user($target_user_id);
}
С помощью этой же функции current_user_can(), вызываются meta capabilities
PHP:
function disallow_editing_of_admins( $capability, $target_user_id ) {
    
    // If the user is an admin return false and disallow the action
    if($capability == "edit_user" && user_is_admin($target_user_id)) {
        return false;
    } else {
        return true;
    }
}
add_filter( 'map_meta_cap', 'disallow_editing_of_admins');
}
Например, когда вызывается current_user_can(‘edit_user’, 1) , после фильтрации это выглядит так: ID 1 ($target_user_id). В зависимости от этого, выставляется значение true/false и отключается возможность редактирования (админ права).

Более подробную информацию можно найти здесь: https://blog.ripstech.com/2018/wordpress-design-flaw-leads-to-woocommerce-rce/
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх