
API SAS Úsalo Flujo RCE
Identificador: CVE-2025-50881
Producto Afectado: API Use it Flow Versión 8.2.0 (Rev 15851), Versión 9.2.0 (Rev 18093)
Editor: https://www.tenorsolutions.com (anteriormente https://api-sas.fr/)
Componente(s) Afectado(s): flow/admin/moniteur.php
Tipo de Vulnerabilidad: Ejecución Remota de Código (RCE) mediante Inyección de eval()
Gravedad: Crítica
Descripción:
El script flow/admin/moniteur.php es vulnerable a Ejecución Remota de Código. Al manejar solicitudes GET, el script toma la entrada proporcionada por el usuario del parámetro de URL action, realiza una validación insuficiente e incorpora esta entrada en una cadena ($wscom) que posteriormente es ejecutada por la función eval(). Aunque se realiza una comprobación method_exists(), solo valida la parte de la entrada del usuario del primer paréntesis , lo que permite a un atacante agregar código PHP arbitrario después de una estructura de llamada a método válida. Una explotación exitosa permite a un atacante no autenticado o trivialmente autenticado ejecutar código PHP arbitrario en el servidor con los privilegios del proceso del servidor web.
(Fragmentos de Código Vulnerables:
Archivo: flow/admin/moniteur.php
Lectura de Entrada de Usuario (Línea ~45):
if (isset($_GET['action'])) {$action=urldecode(htmlentities($_GET['action']));} else notice($server);
Comentario: $action se deriva directamente de la entrada del usuario ($_GET['action']) con solo decodificación de URL y codificación de entidades HTML, lo que no previene la inyección de código.
Construcción de Cadena de Comando (Línea ~47):
$wscom='$ws->'.$action;
Comentario: La variable $action controlada por el usuario se concatena en la cadena $wscom.
Validación Insuficiente (Línea ~49):
$func=explode("(",$action);
if (method_exists($ws, $func[0])) {
Comentario: Solo la parte de $action antes del primer paréntesis se verifica contra métodos válidos en la clase UIFWebService.
Ejecución de Código mediante eval() (Línea ~50):
eval('$res=' . $wscom . ';');
Comentario: La cadena construida $wscom, que contiene entrada del usuario, se ejecuta como código PHP.
Explotación:
Un atacante puede elaborar una solicitud GET a moniteur.php, proporcionando parámetros login y password arbitrarios (ya que se utilizan para la autenticación dentro del método llamado, no para el eval en sí) y un parámetro action malicioso. El parámetro action debe comenzar con un nombre de método válido de la clase UIFWebService (por ejemplo, get_data) para pasar la comprobación method_exists, seguido de código PHP inyectado.
Ejemplo de Payload:
GET /admin/moniteur.php?login=foo&password=bar&action=get_data(1);phpinfo();$res=0; HTTP/1.1
Host: <target>
Este payload resulta en la ejecución por eval() de código similar a:
$res = $ws->get_data(1);phpinfo();$res=0;;
Esto ejecuta el método get_data, luego ejecuta phpinfo() y finalmente establece $res en 0.
Impacto: Un atacante puede ejecutar comandos arbitrarios en el servidor, lo que potencialmente puede llevar a:
Divulgación: