the_open_door
café
ESEN
← Volver al índice

Subrion CMS: file upload to RCE (CVE-2018-19422)

Subrion CMS 4.2.1 (y anteriores) sufre una subida de fichero autenticada que desemboca en ejecución de código (CVE-2018-19422). El gestor de ficheros del panel de administración intenta impedir la subida de scripts con una lista negra de extensiones (.php, .phtml, etc.), pero la comprobación es incompleta: no cubre extensiones que el servidor también ejecuta como PHP, en particular .phar.

Un .phar (PHP Archive) es interpretado por PHP igual que un .php cuando Apache está configurado para pasar por el motor los ficheros con esa extensión. Como el filtro no lo bloquea, se puede subir una webshell .phar al directorio uploads del panel y ejecutarla desde la URL pública:

searchsploit 'subrion cms 4.2'
searchsploit -m php/webapps/49876.py
python subrioncms_exp.py -u http://<host>/panel/ -l admin -p admin
# -> webshell en http://<host>/panel/uploads/<rand>.phar

El exploit público automatiza el flujo completo: toma el token CSRF, inicia sesión (a menudo con credenciales por defecto admin/admin), sube la webshell con nombre aleatorio y devuelve una consola. La ejecución es como el usuario del servidor web (www-data), un punto de partida típico para escalar después.

Encaja en la familia de RCE por subida de fichero: el fallo no es "poder subir", sino que la validación por extensión es una lista negra evadible y el directorio de subidas es ejecutable.

Cómo detectarlo. El log muestra un login en /panel/ (a menudo con admin/admin) seguido de un POST al gestor de ficheros que sube un .phar, y luego una petición a /panel/uploads/<rand>.phar que devuelve salida de comando en vez de un fichero de datos. Un .phar (o cualquier extensión ejecutable como PHP) apareciendo en uploads/ es la firma en disco (FIM), y el proceso web lanzando sh/bash como hijo confirma la ejecución. El nombre aleatorio del fichero, típico del exploit público, es una pista adicional.

Defensa. Actualizar Subrion; validar por tipo real con allowlist estricta; almacenar las subidas fuera del docroot o en un directorio sin ejecución de PHP; y cambiar las credenciales por defecto del panel.

Máquinas donde se aplica