
Deuxième CVE toujours une exécution de code à distance
CVE-2026-35196 · Chamilo LMS · Injection de commandes OS → RCE
Chercheur : K
Type de divulgation : Divulgation responsable
Statut : Corrigé
Produit affecté : Chamilo LMS< 2.0(Confirmé surv1.11.32)
| Champ | Détails |
|---|---|
| Produit | Chamilo LMS |
| Version affectée | < 2.0 (Confirmé sur v1.11.32) |
| Vulnérabilité | Injection de commandes OS |
| CWE | CWE-78 — Neutralisation incorrecte des éléments spéciaux utilisés dans une commande OS |
| Score CVSSv3.1 | 8.8 (ÉLEVÉ) |
| Vecteur | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Authentification requise | Oui (tout utilisateur authentifié avec une session empoisonnée) |
| Type d'exploit | Exécution de code à distance authentifiée |
| Fichier vulnérable | main/inc/ajax/gradebook.ajax.php |
Une vulnérabilité critique d'injection de commandes OS existe dans l'action export_all_certificates du fichier main/inc/ajax/gradebook.ajax.php de Chamilo LMS v1.11.32.
L'application récupère un code de cours via api_get_course_id(), qui lit directement depuis $_SESSION['_cid']. Cette valeur dérivée de la session est concaténée sans assainissement dans un appel shell_exec() — pas de escapeshellarg(), pas de validation de liste blanche, pas de contrôle de type.
Un attaquant qui peut manipuler ou empoisonner la variable _cid de sa session (via un empoisonnement de session, un enchaînement IDOR ou d'autres primitives de manipulation de session) peut injecter des métacaractères shell arbitraires et obtenir une exécution de code à distance complète en tant qu'utilisateur du serveur web (www-data).
Fichier vulnérable : main/inc/ajax/gradebook.ajax.php
Fonction vulnérable : export_all_certificates
Lorsqu'un utilisateur déclenche l'action export_all_certificates, le script tente d'exécuter un processus en arrière-plan pour le traitement des certificats :
$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 &");
Parce que l'application fait implicitement confiance au contenu des variables de session et ne les échappe pas correctement avant de les envoyer au shell système, un attaquant avec une session manipulée peut ajouter et exécuter des commandes malveillantes. Par exemple, si _cid contient "; touch /tmp/remote_code_by_k; #", la commande interprétée par le shell bash/sh devient :
php /var/www/chamilo/main/gradebook/cli/export_all_certificates.php ; touch /tmp/remote_code_by_k; # ... > /dev/null &
Le shell exécute le script CLI, suivi de la charge utile injectée, et ignore le reste de la chaîne de commande prévue.
$_SESSION['_cid']. Cela peut être réalisé en enchaînant cette faille avec une vulnérabilité d'empoisonnement de session ou en manipulant la valeur du code de cours via un IDOR ou une gestion de paramètre non sécurisée ailleurs dans l'application pour mettre à jour le contexte de sa session._cid sur : "; [MALICIOUS_COMMAND]; #"GET à : /main/inc/ajax/gradebook.ajax.php?a=export_all_certificates&cat_id=1 avec le cookie de session empoisonné.www-data).| Dimension | Impact |
|---|---|
| Confidentialité | Accès en lecture complet — code source, configurations, identifiants de base de données, /etc/passwd |
| Intégrité | Écriture de fichier arbitraire, déploiement de webshell, manipulation de base de données |
| Disponibilité | Interruption de service, destruction du système de fichiers, déploiement de ransomware |
| Portée | Processus du serveur web (www-data); potentiel de mouvement latéral via l'exposition d'identifiants |
escapeshellarg() : Enveloppez toutes les variables dérivées de l'utilisateur (comme $courseCode, $sessionId et $userList) avec escapeshellarg() de PHP avant de les passer à shell_exec() pour neutraliser les métacaractères OS arbitraires.$_SESSION['_cid']) sont rigoureusement typées et assainies afin que les potentielles attaques d'« empoisonnement de session » ou d'enchaînement IDOR soient bloquées au point d'entrée.www-data) avec des permissions d'écriture restrictives sur le système de fichiers et limitez l'accès de l'application aux binaires shell Linux essentiels pour atténuer les capacités post-exploitation.| Composant | Détails |
|---|---|
| OS | Ubuntu Server (Docker) |
| Serveur web | Apache / Nginx |
| PHP | 7.x / 8.x |
| Application | Chamilo LMS v1.11.32-v2.0 |
| Shell | /bin/sh → bash |
Pseudonyme : K
GitHub : https://github.com/kx00007
Domaine : Vulnérabilité RCE côté serveur, Chasse aux CVE, Recherche de vulnérabilités, Développement d'exploits
Précédent : CVE-2026-29041 (Chamilo LMS — RCE authentifiée via téléchargement de fichier)
⚡Essayez plus fort.