
Analyse technique et preuve de concept pour CVE-2025-69906, une vulnérabilité de téléchargement arbitraire de fichier dans Monstra CMS 3.0.4 menant à une exécution de code à distance via des techniques de contournement de liste noire.
Auteur : David PS Abraham
Date : 5 février 2026
Sévérité : Critique – Exécution de code à distance (CVSS 8.8+)
CWE : 434 (Téléchargement sans restriction de fichier de type dangereux)
Le plugin Files Manager de Monstra CMS v3.0.4 (plugins/box/filesmanager/filesmanager.admin.php) implémente une validation des extensions de fichiers basée sur une liste noire qui stocke les fichiers téléchargés directement dans le répertoire web /public/files/, permettant une exécution de code à distance dans des configurations Apache/PHP standard.
Défaut principal (filesmanager.admin.php, lignes ~150-220) :
// WEAK BLACKLIST VALIDATION
$blacklist = array('.php', '.php3', '.php4', '.php5', '.phtml', '.pl', '.py', '.jsp', '.asp', '.sh', '.cgi');
$bypass = true;
foreach ($blacklist as $bad) {
if (strpos(strtolower($filename), $bad) !== false) {
$bypass = false;
break;
}
}
if ($bypass) {
// DIRECT WEB-ROOT WRITE - No sanitization
$upload_path = BASE_PATH . DS . 'public' . DS . 'files' . DS;
move_uploaded_file($file['tmp_name'], $upload_path . $filename);
// http://target/public/files/shell.PHP executes!
}
| Défaut | Exemple de contournement | Résultat |
|---|---|---|
| Sensibilité à la casse | shell.PHP, shell.pHp | ✅ Exécute |
| Double extension | shell.php.jpg | ✅ Exécute |
| Octet nul | shell.php%00.jpg | ✅ Exécute |
| PHP non standard | shell.php7, shell.phtml | ✅ Exécute |
| Impact | Description |
|---|---|
| RCE | Exécution de PHP arbitraire via un webshell téléchargé |
| Élévation de privilèges | Administrateur authentifié → compromission du serveur |
| Divulgation d'informations | Lecture de fichiers via <?php echo file_get_contents('../config.php'); ?> |
| Vecteur d'attaque | À distance, authentifié (interface Files Manager) |
Monstra CMS <= 3.0.4
Path: plugins/box/filesmanager/filesmanager.admin.php
Repo: https://github.com/monstra-cms/monstra/tree/dev/plugins/box/filesmanager
2026-02-05: CVE-2025-69906 assigned by MITRE
2026-02-05: Public disclosure
1. Disable Files Manager plugin
2. Whitelist ALLOWED extensions only (image/png, image/jpeg)
3. Rename uploads: uniqid() + .jpg
4. Store outside web root
5. Migrate to maintained CMS
Découvert par : David PS Abraham (Chercheur en cybersécurité)
Divulgation responsable suite à l'attribution du CVE. Aucune exploitation en direct n'a été effectuée.
Projet non maintenu depuis 2018 selon l'avis du dépôt.
[1]
Copiez l'intégralité de ce contenu → Collez-le dans votre README.md → Commitez et poussez → Partagez sur les réseaux sociaux.