Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
cve-2024-38819 — Analyse approfondie de CVE-2024-38819, une vulnérabilité de type file traversal dans Spring WebFlux, avec analyse au niveau du code, PoC et stratégies d'atténuation incluant des filtres et des règles IPS. | Kitploit
Outils/GitHubGitHub/skrkcb2/cve-2024-38819
Analyse des VulnérabilitésExploitationSécurité WebTests d'IntrusionArticles et RechercheApprentissage et Éducation
GitHubskrkcb2/cve-2024-38819

cve-2024-38819

Analyse approfondie de CVE-2024-38819, une vulnérabilité de type file traversal dans Spring WebFlux, avec analyse au niveau du code, PoC et stratégies d'atténuation incluant des filtres et des règles IPS.

Voir le dépôt
il y a 1 anPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2024-38819

01. Aperçu de File-Traversal et WebFlux

  • 1) Aperçu de File-Traversal et de WebFlux

    La vulnérabilité File-Traversal (parcours de chemin, Path Traversal) permet à un attaquant de contourner les autorisations du système de fichiers dans une application web et d'accéder à des fichiers arbitraires. Elle est répertoriée sous le code CWE-22 et constitue un type d'attaque.

    Spring WebFlux est un module introduit dans Spring 5 qui prend en charge la programmation réactive et le développement d'applications asynchrones non bloquantes. WebFlux.fn fournit un routage fonctionnel des points de terminaison, permettant une configuration de routage concise et flexible à l'aide d'expressions lambda.

    CVE-2024-38819 survient dans les applications utilisant WebFlux.fn, WebMVC.fn. Ce document examine comment cette vulnérabilité se produit dans le contexte de WebFlux, en suivant le flux de code, et explore les mesures correctives correspondantes.

02. Analyse de la vulnérabilité File-Traversal dans l'environnement WebFlux 6.1.3

  • 2.1 Analyse de File-Traversal avec WebFlux 6.1.3

    Dans Spring WebFlux 6.1.3, il est possible de réaliser une attaque File-Traversal via un exemple de service de ressources statiques (static resource).
    Nous allons examiner cet exemple pour comprendre comment Spring WebFlux peut être exploité pour provoquer un File-Traversal.

1) Flux de l'attaque File-Traversal utilisant Spring WebFlux 6.1.3

Description de l'image

[Figure 1] FileApplication.java

[Figure 1] Dans Spring WebFlux, toutes les requêtes vers /static/** sont servies en recherchant dans le répertoire C:/file du serveur. Ici,
lors de l'appel à RouterFunctions.resources, le problème commence dans PathResourceLookupFunction.class de WebFlux ([Figure 2], [Figure 3]).

Description de l'image

[Figure 2] PathResourceLookupFunction.class - apply

[Figure 2] PathResourceLookupFunction - apply vérifie si le chemin donné pointe vers une ressource valide dans Spring WebFlux et retourne cette ressource sous forme de
Mono. Dans ce processus, la vulnérabilité se produit dans la fonction isInvalidPath, lors des étapes de correspondance de chemin, validation, décodage du chemin et accès à la ressource.

Description de l'image

[Figure 3] PathResourceLookupFunction.class - isInvalidPath

[Figure 3] PathResourceLookupFunction - isInvalidPath montre la condition StringUtils.cleanPath(path).contains("../").
Lors d'une requête http://localhost:8080/static/file/../Windows/System32/drivers/etc/hosts, cette condition ne peut pas être vraie. Raison :

Description de l'image

Description de l'image

[Figure 4] StringUtils.class - cleanPath

[Figure 4] StringUtils.class - cleanPath montre que StringUtils.cleanPath(path) supprime TOP_PATH (".."), puis place le chemin dans pathElements, et top devient 0. Ainsi,
une attaque contenant ".." une seule fois est traitée comme un chemin normal. Par conséquent, la fonction isInvalidPath de [Figure 3] retourne false, et

Description de l'image

[Figure 5] PathResourceLookupFunction.class - apply - 2

Description de l'image

[Figure 6] PathResourceLookupFunction.class - isResourceUnderLocation

Suite à l'appel de isResourceUnderLocation dans [Figure 5], une nouvelle validation via cleanPath a lieu dans [Figure 6]. Le chemin transmis dans [Figure 5] est C:/file../Windows/System32/drivers/etc/hosts, et

Description de l'image

[Figure 7] StringUtils.class - cleanPath -2

Grâce au code de [Figure 7], le préfixe devient C:/, et le chemin est modifié via [Figure 4] en /Windows/System32/drivers/etc/hosts, le retour final étant
C:/Windows/System32/drivers/etc/hosts. Voici le flux.

2) Exemple d'attaque File-Traversal utilisant Spring WebFlux 6.1.3

Actuellement, le test a été effectué sur Windows avec C:/file, mais ce cas est très dangereux s'il est combiné avec un lien symbolique sous Linux.
(La vulnérabilité ne se produit que lorsque ".." est présent une seule fois ; avec "../.." deux fois, le comportement normal s'applique.) 20250207_150316

2-1) Exemple d'attaque File-Traversal utilisant Spring WebFlux 6.1.3 - Exemple 2

Attaque avec un lien symbolique sur un serveur Linux

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

Ajout du lien symbolique : ln -s /static /app/static/link, puis attaque 20250208_101836

03. Mesures correctives

Nous avons examiné le déroulement de l'attaque File Traversal (CVE-2024-38819) dans l'environnement Spring WebFlux. Il s'agit d'une méthode d'attaque permettant le vol d'informations du serveur, d'où l'importance des mesures correctives. Nous proposons ici la mise à jour vers la dernière version, la création d'une logique de validation supplémentaire, et le blocage via un IPS.

  • Mise à jour de Spring Framework

    Veuillez consulter le tableau ci-dessous et vérifier votre version avant de mettre à niveau.

    Description de l'image

  • Exemple de logique de validation supplémentaire

    Comme le montrent les exemples d'attaque, le problème vient des cas où TOP_PATH (..) apparaît une seule fois. Voici un exemple simple de logique de filtrage (à adapter par les développeurs).
    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("Accès à un chemin vulnérable.");
                     }        
                  }
                  return next.handle(request);
              });
    }
    
  • Blocage via IPS

    Exemple d'attaque : requête via Postman contenant le chemin ../ dans l'URL
    image Bloquer toute requête URL contenant ../ provoquant un déplacement vers un répertoire parent

04. Conclusion

Nous avons étudié le File Traversal via WebFlux. Cette vulnérabilité provient de l'utilisation de StringUtils.cleanPath() sans avoir conscience du problème dans sa logique.

05. Références

(POC) https://github.com/masa42/CVE-2024-38819-POC
(Spring officiel) 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

Télécharger l’outil

20250210_150316