
Java deserialization भेद्यता शोषण उपकरण जिसमें कई मार्शलरों (Jackson, XStream, SnakeYAML) के लिए पेलोड जनरेटर तथा रिमोट कोड एक्ज़ीक्यूशन के लिए JNDI रेफ़रेंस इंडायरेक्शन शामिल हैं।
यदि आप Log4Shell/CVE-2021-44228 के लिए यहाँ आए हैं, तो आप शोषण वैक्टर और प्रभावित Java रनटाइम संस्करणों के बारे में पढ़ना चाह सकते हैं: https://mbechler.github.io/2021/12/10/PSA_Log4Shell_JNDI_Injection/
क्रिस फ्रोहॉफ और गेब्रियल लॉरेंस को Java ऑब्जेक्ट डिसीरियलाइज़ेशन कमजोरियों पर अपना शोध प्रस्तुत किए हुए दो साल से अधिक हो गए हैं, जिसके परिणामस्वरूप अंततः ऐसा हुआ जिसे आसानी से Java इतिहास में रिमोट कोड निष्पादन बग्स की सबसे बड़ी लहर के रूप में वर्णित किया जा सकता है।
इस विषय पर शोध ने संकेत दिया कि ये कमजोरियाँ केवल Java सीरियलाइज़ेशन या XStream जैसे अभिव्यंजक तंत्रों तक सीमित नहीं हैं, बल्कि कुछ को अन्य तंत्रों पर भी लागू किया जा सकता है।
यह पेपर विभिन्न Java ओपन-सोर्स मार्शलिंग लाइब्रेरीज़ का विश्लेषण प्रस्तुत करता है, जिसमें शोषण विवरण शामिल हैं, जो हमलावर द्वारा आपूर्ति किए गए मनमाने प्रकारों के अनमार्शलिंग की अनुमति देती हैं/देती थीं, और दिखाता है कि यह प्रक्रिया कैसे भी की जाए और चाहे कोई भी अंतर्निहित बाधाएँ हों, यह समान शोषण तकनीकों के प्रति संवेदनशील है।
पूरा पेपर marshalsec.pdf पर उपलब्ध है
सभी जानकारी और कोड केवल शैक्षिक उद्देश्यों और/या इन कमजोरियों के लिए अपने स्वयं के सिस्टम का परीक्षण करने के लिए प्रदान किए गए हैं।
Java 8 आवश्यक है। Maven का उपयोग करके बिल्ड करें mvn clean package -DskipTests। निम्नानुसार चलाएँ:
java -cp target/marshalsec-[VERSION]-SNAPSHOT-all.jar marshalsec.<Marshaller> [-a] [-v] [-t] [<gadget_type> [<arguments...>]]
जहाँ
निम्नलिखित मार्शलरों के लिए पेलोड जनरेटर शामिल हैं:
कोई पूर्वापेक्षा नहीं।
पूर्वापेक्षाएँ:
लोड की जाने वाली सेवा वर्तमान में javax.script.ScriptEngineFactory पर हार्डकोडेड है।
पूर्वापेक्षाएँ:
पूर्वापेक्षाएँ:
java -cp target/marshalsec-[VERSION]-SNAPSHOT-all.jar marshalsec.jndi.(LDAP|RMI)RefServer <codebase>#<class> [<port>]
परीक्षण चलाते समय तर्कों को नियंत्रित करने वाले कुछ सिस्टम गुण हैं (maven के माध्यम से या -a का उपयोग करते समय)
परीक्षण एक स्थापित SecurityManager के साथ चलते हैं जो सिस्टम कमांड निष्पादन के साथ-साथ रिमोट कोडबेस से निष्पादित होने वाले कोड की जाँच करता है। उसके काम करने के लिए उपयोग में लोड किया गया क्लास कुछ सुरक्षा प्रबंधक जाँच को ट्रिगर करना चाहिए।
| Marshaller | गैजेट प्रभाव |
|---|
| BlazeDSAMF(0|3|X) | केवल JDK, Java सीरियलाइज़ेशन तक वृद्धि विभिन्न तृतीय-पक्ष लाइब्रेरी RCEs |
| Hessian|Burlap | विभिन्न तृतीय-पक्ष RCEs |
| Castor | निर्भरता लाइब्रेरी RCE |
| Jackson | संभावित केवल JDK RCE, विभिन्न तृतीय-पक्ष RCEs |
| Java | एक और तृतीय-पक्ष RCE |
| JsonIO | केवल JDK RCE |
| JYAML | केवल JDK RCE |
| Kryo | तृतीय-पक्ष RCEs |
| KryoAltStrategy | केवल JDK RCE |
| Red5AMF(0|3) | केवल JDK RCE |
| SnakeYAML | केवल JDK RCEs |
| XStream | केवल JDK RCEs |
| YAMLBeans | तृतीय-पक्ष RCE |