
Seconda CVE ancora Remote Code Execution
CVE-2026-35196 · Chamilo LMS · Iniezione di Comandi di Sistema → RCE
Ricercatore: K
Tipo di Divulgazione: Divulgazione Responsabile
Stato: Corretto Prodotto Interessato: Chamilo LMS< 2.0(Confermato suv1.11.32)
| Field | Details |
|---|---|
| Prodotto | Chamilo LMS |
| Versione Interessata | < 2.0 (Confermato su v1.11.32) |
| Vulnerabilità | Iniezione di Comandi di Sistema |
| CWE | CWE-78 — Neutralizzazione impropria di elementi speciali usati in un comando di sistema |
| Punteggio CVSSv3.1 | 8.8 (ALTO) |
| Vector | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Autenticazione Richiesta | Sì (qualsiasi utente autenticato con una sessione avvelenata) |
| Tipo di Exploit | Esecuzione Remota di Codice Autenticata |
| File Vulnerabile | main/inc/ajax/gradebook.ajax.php |
Una vulnerabilità critica di Iniezione di Comandi di Sistema è presente nell'azione export_all_certificates di main/inc/ajax/gradebook.ajax.php in Chamilo LMS v1.11.32.
L'applicazione recupera un codice corso tramite api_get_course_id(), che legge direttamente da $_SESSION['_cid']. Questo valore derivato dalla sessione viene concatenato senza sanitizzazione in una chiamata shell_exec() — nessun escapeshellarg(), nessuna validazione tramite whitelist, nessun controllo di tipo.
Un attaccante che riesce a manipolare o avvelenare la variabile _cid della propria sessione (tramite session poisoning, concatenamento di IDOR o altre primitive di manipolazione della sessione) può iniettare metacaratteri di shell arbitrari e ottenere piena esecuzione remota di codice come utente del server web (www-data).
File Vulnerabile: main/inc/ajax/gradebook.ajax.php
Funzione Vulnerabile: export_all_certificates
Quando un utente attiva l'azione export_all_certificates, lo script tenta di avviare un processo in background per elaborare i certificati:
$courseCode = api_get_course_id(); // Retrieves the value from $_SESSION['_cid']
$sessionId = api_get_session_id();
// ...
$commandScript = api_get_path(SYS_CODE_PATH).'gradebook/cli/export_all_certificates.php';
$userList = implode(',', $userList);
// Flaw: Variables like $courseCode are passed directly to the shell without escapeshellarg()
shell_exec("php $commandScript $courseCode $sessionId $categoryId $userList > /dev/null &");
Poiché l'applicazione si fida implicitamente del contenuto delle variabili di sessione e non le esegue correttamente l'escape prima di inviarle alla shell di sistema, un attaccante con una sessione manipolata può aggiungere ed eseguire comandi dannosi. Ad esempio, se _cid contiene "; touch /tmp/remote_code_by_k; #", il comando interpretato dalla shell bash/sh diventa:
php /var/www/chamilo/main/gradebook/cli/export_all_certificates.php ; touch /tmp/remote_code_by_k; # ... > /dev/null &
La shell esegue lo script CLI, seguita dal payload iniettato, e ignora il resto della stringa di comando prevista.
$_SESSION['_cid']. Ciò può essere ottenuto concatenando questa falla con una vulnerabilità di session poisoning o manipolando il valore del codice corso attraverso un IDOR o una gestione non sicura dei parametri altrove nell'applicazione per aggiornare il contesto della propria sessione._cid su: "; [MALICIOUS_COMMAND]; #"GET a: /main/inc/ajax/gradebook.ajax.php?a=export_all_certificates&cat_id=1 con il cookie di sessione avvelenato.www-data).| Dimension | Impact |
|---|---|
| Riservatezza | Accesso completo in lettura — codice sorgente, configurazioni, credenziali del DB, /etc/passwd |
| Integrità | Scrittura arbitraria di file, deploy di webshell, manipolazione del database |
| Disponibilità | Interruzione del servizio, distruzione del filesystem, deploy di ransomware |
| Ambito | Processo del server web (www-data); potenziale movimento laterale tramite esposizione delle credenziali |
escapeshellarg(): Avvolgere tutte le variabili derivate dall'utente (come $courseCode, $sessionId e $userList) con escapeshellarg() di PHP prima di passarli a shell_exec() per neutralizzare metacaratteri di sistema arbitrari.$_SESSION['_cid']) siano tipizzate rigidamente e sanificate, in modo che potenziali attacchi di "Session Poisoning" o concatenamento di IDOR siano bloccati al punto di ingresso.www-data) con permessi di scrittura restrittivi sul filesystem e limitare l'accesso dell'applicazione ai binari di shell Linux essenziali per mitigare le capacità post-exploitation.| Component | Details |
|---|---|
| Sistema Operativo | Ubuntu Server (Docker) |
| Server Web | Apache / Nginx |
| PHP | 7.x / 8.x |
| Applicazione | Chamilo LMS v1.11.32-v2.0 |
| Shell | /bin/sh → bash |
Handle : K
GitHub : https://github.com/kx00007
Focus : Server-Side Vulnerability RCE, CVE Hunting, Vulnerability Research, Exploit Development
Prior : CVE-2026-29041 (Chamilo LMS — Authenticated RCE via File Upload)
⚡Prova di più.