Path traversal in php-spx (CVE-2024-42007)
php-spx es un profiler para PHP que se activa desde el navegador. Su versión 0.4.15 sufre un path traversal (CVE-2024-42007) en el endpoint que sirve sus recursos: el parámetro que indica qué fichero cargar no se normaliza, así que con ../ se sale del directorio de assets y se lee cualquier fichero que pueda leer el usuario del servidor web (LFI / path traversal).
curl 'http://<ip>/?SPX_KEY=dev&SPX_UI_URI=/../../../../../../etc/passwd'El interés real no es /etc/passwd, sino los ficheros de la aplicación: el index.php o el config.php del sitio suelen contener credenciales o hashes de usuarios (secretos en el código) que después se crackean (crackeo de hashes) y se reutilizan para autenticarse o subir una webshell (subida de fichero a RCE).
Matices. php-spx solo responde si el profiler está habilitado y se conoce (o adivina) su clave de acceso (SPX_KEY), frecuentemente dev en despliegues de prueba; no debería estar expuesto en producción. El traversal lee, no ejecuta: es un primer eslabón para encadenar con la lógica de la app, no un RCE por sí solo.
Cómo detectarlo. La firma está en el propio parámetro: peticiones con SPX_KEY= y SPX_UI_URI=/../ (o %2e%2e%2f) en el log de acceso, apuntando a rutas fuera del directorio de assets (/etc/passwd, config.php). Que el endpoint del profiler responda en producción es ya anómalo, porque no debería estar expuesto; un origen recorriendo varias rutas con ../ de distinta profundidad confirma el traversal. Cualquier WAF marca la secuencia codificada.
Defensa. Actualizar php-spx; nunca dejar el profiler accesible desde Internet (restringir por IP o deshabilitarlo fuera de desarrollo); y normalizar/validar del lado servidor cualquier ruta que provenga de un parámetro antes de abrir el fichero.
Máquinas donde se aplica
- SPXProving Grounds Practice