Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
cve-2024-38819 — Análisis en profundidad de CVE-2024-38819, una vulnerabilidad de recorrido de archivos en Spring WebFlux, con desglose a nivel de código, PoC y estrategias de mitigación que incluyen filtros y reglas IPS. | Kitploit
Herramientas/GitHubGitHub/skrkcb2/cve-2024-38819
Análisis de VulnerabilidadesExplotaciónSeguridad WebPruebas de PenetraciónPapers e InvestigaciónAprendizaje y Educación
GitHubskrkcb2/cve-2024-38819

cve-2024-38819

Análisis en profundidad de CVE-2024-38819, una vulnerabilidad de recorrido de archivos en Spring WebFlux, con desglose a nivel de código, PoC y estrategias de mitigación que incluyen filtros y reglas IPS.

Ver Repositorio
1hace 1 añoAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2024-38819

01. Descripción general de File-Traversal y WebFlux

  • 1) Descripción general de File-Traversal y WebFlux

    La vulnerabilidad de File-Traversal (también conocida como Path Traversal) es un tipo de ataque designado como CWE-22 que permite a un atacante eludir los permisos del sistema de archivos en una aplicación web y acceder a archivos arbitrarios.

    Spring WebFlux es un módulo introducido en Spring 5 que ofrece soporte para programación reactiva y permite el desarrollo de aplicaciones asíncronas no bloqueantes. WebFlux.fn proporciona enrutamiento de endpoints funcionales, lo que permite una configuración de rutas concisa y flexible mediante expresiones lambda.

    CVE-2024-38819 se produce en aplicaciones que utilizan WebFlux.fn y WebMVC.fn. Este documento examina el flujo de código de cómo se produce esta vulnerabilidad en el contexto de WebFlux y busca plantear medidas de mitigación al respecto.

02. Análisis de la vulnerabilidad File-Traversal en el entorno WebFlux 6.13

  • 2.1 Análisis de File-Traversal usando WebFlux 6.13

    En Spring WebFlux 6.13 es posible realizar un ataque de File-Traversal mediante un ejemplo que sirve . Examinaremos el ejemplo para comprender cómo se provoca el File-Traversal al usar Spring WebFlux.
En [Figura 1], Spring WebFlux busca todas las solicitudes que llegan a /static/** en el directorio C:/file del servidor y las sirve. Aquí, durante la llamada a RouterFunctions.resources, el problema comienza en PathResourceLookupFunction.class de WebFlux, como se muestra en [Figura 2] y [Figura 3]. [Figura 2] PathResourceLookupFunction - apply verifica si la ruta dada apunta a un recurso válido en Spring WebFlux y devuelve dicho recurso en forma de Mono. Durante este proceso se realizan varios pasos, como la coincidencia de rutas, la validación, la decodificación de la ruta y el acceso al recurso; la vulnerabilidad se produce en la función isInvalidPath. En [Figura 3], PathResourceLookupFunction - isInvalidPath contiene la condición StringUtils.cleanPath(path).contains("../"), pero al solicitar http://localhost:8080/static/file/../Windows/System32/drivers/etc/hosts, dicha condición no puede ser True. La razón es que En [Figura 4], StringUtils.class - cleanPath, StringUtils.cleanPath(path) elimina TOP_PATH(".."), coloca la ruta en pathElements y top pasa a ser 0; por lo tanto, la sintaxis de ataque con un solo ".." se procesa como una sintaxis normal. Así, la función isInvalidPath de [Figura 3] devuelve false, y Mediante la llamada a cleanPath en isResourceUnderLocation de [Figura 5], se realiza una verificación adicional de cleanPath, como se muestra en [Figura 6]; la ruta pasada desde [Figura 5] es C:/file../Windows/System32/drivers/etc/hosts, y Con el código de [Figura 7], el prefijo se convierte en C:/ y la ruta se modifica a /Windows/System32/drivers/etc/hosts mediante [Figura 4]; el retorno final se procesa como C:/Windows/System32/drivers/etc/hosts.
recursos estáticos (static resources)

1) Flujo del ataque de File-Traversal usando Spring WebFlux 6.13

Descripción de la imagen

[Figura 1] FileApplication.java



Descripción de la imagen

[Figura 2] PathResourceLookupFunction.class - apply




Descripción de la imagen

[Figura 3] PathResourceLookupFunction.class - isInvalidPath


Descripción de la imagen

Descripción de la imagen

[Figura 4] StringUtils.class - cleanPath


Descripción de la imagen

[Figura 5] PathResourceLookupFunction.class - apply - 2

Descripción de la imagen

[Figura 6] PathResourceLookupFunction.class - isResourceUnderLocation

Descripción de la imagen

[Figura 7] StringUtils.class - cleanPath -2


2) Ejemplo de ataque de File-Traversal usando Spring WebFlux 6.13

Actualmente la prueba se realizó en Windows con C:/file, pero este caso resulta muy peligroso si se combina con un enlace simbólico en Linux.
(Con "../../" (dos veces) se aplica la lógica normal; la vulnerabilidad solo ocurre con "../" (una vez)) 20250207_150316

2-1) Ejemplo 2 de ataque de File-Traversal usando Spring WebFlux 6.13

Ataque combinado con un enlace simbólico en un servidor Linux

root@kitploit:~
 public RouterFunction<ServerResponse> staticResourceRouter() {
     return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/"));
 }

Agregar el enlace simbólico con ln -s /static /app/static/link y luego atacar 20250208_101836

03. Medidas de mitigación

Hasta ahora hemos revisado el flujo en el que se ejecuta el File Traversal (CVE-2024-38819) en el entorno Spring WebFlux. Dado que es un ataque que permite el robo de información del servidor, las medidas de mitigación son importantes. Para ello, se propone la actualización a la última versión, la creación de lógica de verificación adicional y el bloqueo mediante IPS.

  • Actualización de Spring Framework

    Consulte la tabla a continuación, verifique la versión en uso y realice la actualización.

    Descripción de la imagen

  • Ejemplo de creación de lógica de verificación adicional

    Como se observa en los ejemplos de ataque anteriores, el problema ocurre cuando TOP_PATH(..) se incluye una sola vez; por lo tanto, se aplica una lógica de filtro simple (los desarrolladores pueden ampliarla tomando esto como referencia).
    root@kitploit:~
    @Bean
    public RouterFunction<ServerResponse> staticResourceRouter() {    
      return RouterFunctions.resources("/static/**", new FileSystemResource("C:/file"))
              .filter((request, next) -> {
                  String path = request.path();
                  if (path.contains("..")) {
                     if(!StringUtils.cleanPath(path).contains("../")) {
                         return ServerResponse.status(HttpStatus.FORBIDDEN).bodyValue("Vuln path access.");
                     }        
                  }
                  return next.handle(request);
              });
    }
    
  • Bloqueo mediante IPS

    Ejemplo de ataque: solicitud que incluye la ruta ../ en la URL mediante Postman
    image Bloquear todas las solicitudes URL que provoquen el movimiento a rutas superiores mediante ../
    20250210_150316

04. Conclusión

Hemos analizado el File Traversal a través de WebFlux. Esta vulnerabilidad se presenta cuando se utiliza StringUtils.cleanPath() sin ser consciente del problema derivado de su lógica.

05. Referencias

(POC) https://github.com/masa42/CVE-2024-38819-POC
(Sitio oficial de Spring) https://spring.io/security/cve-2024-38819
(CVE-DETAIL) https://www.cvedetails.com/cve/CVE-2024-38819/
(NIST) https://nvd.nist.gov/vuln/detail/cve-2024-38819

Descargar herramienta