the_open_door
café
ESEN
← Volver al índice

Pluck CMS: module RCE (CVE-2023-50564)

Pluck CMS es un gestor de contenidos en PHP sin base de datos. Su panel de administración permite instalar módulos subiendo un fichero .zip. La CVE-2023-50564 (que afecta a la versión 4.7.18 y anteriores) es una subida de fichero arbitraria: el instalador descomprime el ZIP dentro del directorio de módulos sin validar su contenido, de modo que cualquier .php que metamos dentro acaba en una ruta servida por el servidor web y se puede ejecutar. Es un caso concreto del patrón subida a RCE, con el agravante de que la propia funcionalidad legítima (instalar módulos) es la vía.

Requiere estar autenticado como administrador, así que primero hay que conseguir esas credenciales (en GreenHorn, crackeando un hash filtrado en un repositorio Gitea). Con sesión de admin, el flujo es directo: empaquetar una webshell PHP en un ZIP y subirla por el instalador de módulos.

zip shell.zip shell.php
# admin.php?action=installmodule  →  subir shell.zip
curl 'http://greenhorn.htb/data/modules/shell/shell.php?cmd=id'

Tras la subida, el panel confirma "módulo instalado correctamente" y el .php queda accesible bajo data/modules/. Apuntando una reverse shell se obtiene ejecución como el usuario del servidor web (www-data).

Cómo detectarlo. La cadena es visible en el log: un login de administrador seguido de un POST a admin.php?action=installmodule que sube un .zip, y acto seguido la aparición de un .php nuevo bajo data/modules/ (un FIM sobre ese directorio lo capta al vuelo). La ejecución posterior se ve como una petición a data/modules/<x>/<x>.php?cmd= que devuelve salida de comando, y como el proceso web (www-data) lanzando sh/bash como hijo. Un módulo instalado que contiene código en vez de los ficheros de un módulo legítimo es la firma.

Defensa. Validar el contenido de los paquetes subidos (lista blanca de extensiones, no extraer .php ejecutables a rutas servidas), aislar el directorio de módulos de la ejecución PHP y mantener el CMS actualizado.

Máquinas donde se aplica