Encontrando el camino a la explotación del CVE-2024–25153

Casi Cincuenta Monos
3 min readMar 15, 2024

--

El CVE-2024–25153 es una vulnerabilidad en FileCatalyst Workflow, un componente del sistema de transferencia gestionada de archivos (MFT) de Fortra enfocado en la velocidad de envío. Este fallo de seguridad afecta a las versiones 5.x previas a la 5.1.6 build 114.

El problema fue detectado por el equipo de LRQA Nettitude durante una auditoría de seguridad a uno de sus clientes, que usaba este MFT en su infraestructura externa. Es de agradecer la explicación tan detallada que dan en su blog del proceso que siguieron hasta conseguir la explotación.

Como indicamos FortraCatalyst Workflow es un sistema de transferencia de archivos. Y por tanto permite la subida de archivos. Dado el tipo de aplicación parece obvio, desde el punto de vista de la seguridad, que uno de los puntos críticos a comprobar es si es posible subir un fichero cualquiera y acceder a él posteriormente.

La subida de archivos se realiza mediante una petición POST al endpoint /workflow/servlet/ftpservlet esta requiere de un token de sesión, es decir, el usuario tiene que estar autenticado en el sistema. Pero Workflow permite por defecto el login anónimo de usuarios. La explotación de la vulnerabilidad requiere que esta funcionalidad esté habilitada o tener credenciales de acceso.

Fuente Nettitude

Para estudiar en detalle la aplicación el equipo de Nettitude se descargó y descompiló su código fuente. De los mensajes de error pudieron descubrir que los archivos se suben inicialmente al servidor en el path /workflow/uploadtemp/{session_id}/{file_name}

Este directorio no permite acceder a sus ficheros de manera externa. Pero por la estructura de la URI final es muy tentador pensar en un ataque de path traversal que permita seleccionar otro directorio, dado que tenemos dos parámetros variables, el identificador de sesión y el nombre de fichero.

Una característica importante que hay que tener en cuenta de la ubicación a la que se suben los ficheros es que la aplicación está diseñada para eliminar su contenido automáticamente al poco de completarse la transferencia. Esto tiene dos implicaciones.

La primera es que el tiempo que se tiene para acceder al fichero subido es limitado, aunque suficiente para la explotación.

La segunda es que si se consigue el path traversal hay que tener cuidado con la ubicación que se elige, puesto que si se utiliza un directorio sensible, como el raíz, la aplicación puede llegar a eliminarse a sí misma.

Al intentar manipular el nombre de fichero modificando la cabecera X-File-Name de la petición POST, se observa que la aplicación realiza los controles necesarios para no permitir cadenas que pudiesen dar acceso a directorios fuera del designado.

Descartada una opción sólo queda intentarlo con la otra, el campo session_id. Analizando la sección de código correspondiente a la petición, el equipo descubrió un parámetro opcional llamado sid, que permite controlar este identificador de sesión. Las verificaciones que se realizaban para evitar el path traversal utilizando el nombre de fichero no estaban presentes para este otro campo.

Para que sea posible la explotación la aplicación tiene que tener permisos para crear directorios a partir del directorio web raíz. Aunque esto parezca improbable en un entorno real, esa es exactamente la situación que se encontró el equipo en su auditoría, por lo que pudieron subir una consola y utilizarla para ejecutar comandos en el servidor.

Además de en Workflow esta vulnerabilidad existe también en el componente FileCatalyst Direct. En su repositorio de GitHub Nettitude proporciona una prueba de concepto configurable que realiza las siguientes acciones:

  1. Detecta si el login anónimo está habilitado.
  2. Obtiene un token de sesión válido.
  3. Sube una shell al servidor con un nombre pseudo aleatorio.
  4. Ejecuta un comando que se pase como parámetro.

Fuentes y más información:

--

--