
Java डिसेरिएलाइज़ेशन भेद्यताओं का पता लगाने और उनका शोषण करने के लिए Burp Suite का ऑल-इन-वन प्लगइन
Java Deserialization Scanner एक Burp Suite प्लगइन है जिसका उद्देश्य Java deserialization कमजोरियों का पता लगाना और उनका शोषण करना है। इसे HN Security में Principal Security Analyst Federico Dotta द्वारा लिखा गया है।
प्लगइन तीन अलग-अलग घटकों से बना है:
प्लगइन के विभिन्न घटकों का उपयोग करने के तरीके पर एक मिनी वॉकथ्रू युक्त संक्षिप्त लेख निम्नलिखित URL पर पाया जा सकता है: https://web.archive.org/web/20201130104913/https://techblog.mediaservice.net/2017/05/reliable-discovery-and-exploitation-of-java-deserialization-vulnerabilities/
Java Deserialization Scanner, frohoff और gebl द्वारा बनाए गए "ysoserial" टूल के संशोधित संस्करण के साथ उत्पन्न कस्टम पेलोड का उपयोग करके Java deserialization कमजोरियों का पता लगाता है। मूल टूल (https://github.com/frohoff/ysoserial) Runtime.exec फ़ंक्शन का उपयोग करके सिस्टम पर कमांड निष्पादित करने के लिए पेलोड उत्पन्न करता है। हालाँकि, आमतौर पर कमांड का आउटपुट देखना संभव नहीं होता है और इसलिए इस प्रकार के फ़ंक्शन पर आधारित स्कैनर लिखना आसान नहीं है। इस कारण से, ysoserial के संशोधित संस्करण का उपयोग विभिन्न प्रकार के पेलोड उत्पन्न करने के लिए किया जाता है, जो शोषण के बजाय समस्या का पता लगाने के लिए उपयोगी होते हैं:
वर्तमान में, Java Deserialization Scanner के निष्क्रिय चेक HTTP अनुरोधों में सीरियलाइज़्ड Java ऑब्जेक्ट्स की उपस्थिति की रिपोर्ट करते हैं और सक्रिय चेक निम्नलिखित कमजोर लाइब्रेरीज़ की उपस्थिति के साथ कमजोर deserialization फ़ंक्शन की उपस्थिति को सक्रिय रूप से स्कैन करते हैं:
इसके अलावा, URLSNDS पेलोड पेश किया गया है ताकि सक्रिय रूप से बिना किसी कमजोर लाइब्रेरी के Java deserialization का पता लगाया जा सके। यदि प्लगइन केवल URLDNS समस्या पाता है (और कोई कमजोर लाइब्रेरी नहीं), तो हमलावर संभवतः DoS हमले कर सकता है, लेकिन Remote Code Execution प्राप्त करने के लिए अधिक प्रयास की आवश्यकता है। अधिक विवरण के लिए इस लिंक देखें।
प्लगइन के सभी घटक निम्नलिखित एन्कोडिंग का समर्थन करते हैं:
test फ़ोल्डर में कुछ सरल Java सर्वर एप्लिकेशन हैं जिनका उपयोग प्लगइन का परीक्षण करने के लिए किया जा सकता है। प्रत्येक एप्लिकेशन एक अलग कमजोर Java लाइब्रेरी का उपयोग करता है।
प्लगइन कस्टम इंसर्शन पॉइंट्स पर sleep और DNS पेलोड के साथ पहचान शुरू करने के लिए एक समर्पित टैब प्रदान करता है, ताकि उन विशेष स्थितियों में Java deserialization कमजोरियों की जाँच की जा सके जिनमें अजीब एंट्री पॉइंट स्कैनर के साथ पहचान की अनुमति नहीं देते हैं। मैनुअल टेस्टर के परिणाम Burp Suite स्कैनर परिणामों के बीच डाले जा सकते हैं।
मैनुअल टेस्टर एक अतिरिक्त पहचान विधि प्रदान करता है: CPU पहचान। CPU पहचान विधि Wouter Coekaerts के SerialDOS कार्य (https://gist.github.com/coekie/a27cc406fc9f3dc7a70d) पर आधारित है और यह बिना किसी कमजोर लाइब्रेरी की उपस्थिति के deserialization समस्याओं का पता लगाने में सक्षम है, जिसमें deserialization कार्य के लिए कई CPU चक्रों का उपयोग करने वाली एक वस्तु का उपयोग किया जाता है और प्रतिक्रिया के समय की जाँच की जाती है। CPU पहचान विधि डिफ़ॉल्ट रूप से सक्रिय स्कैन चेक में शामिल नहीं है, क्योंकि इसका उपयोग सावधानी से किया जाना चाहिए: बड़ी संख्या में "हल्के" SerialDOS पेलोड भेजने से पुराने या अत्यधिक लोडेड सिस्टम पर समस्याएँ हो सकती हैं।
Java deserialization कमजोरी पाए जाने के बाद, समर्पित "Exploiting" टैब के साथ समस्या का सक्रिय रूप से शोषण करना संभव है। "Exploiting" टैब deserialization कमजोरियों का शोषण करने के लिए एक सुविधाजनक इंटरफ़ेस प्रदान करता है। यह टैब शोषण वेक्टर उत्पन्न करने के लिए ysoserial टूल का उपयोग करता है और उत्पन्न पेलोड को HTTP अनुरोध में शामिल करता है। ysoserial एक कमजोर लाइब्रेरी और एक कमांड को तर्क के रूप में लेता है और बाइनरी रूप में एक सीरियलाइज़्ड ऑब्जेक्ट उत्पन्न करता है, जिसे लक्ष्य सिस्टम पर कमांड निष्पादित करने के लिए कमजोर एप्लिकेशन को भेजा जा सकता है (स्पष्ट रूप से यदि लक्ष्य एप्लिकेशन कमजोर है)। Exploiting टैब प्लगइन के पहचान अनुभागों के समान एन्कोडिंग प्रारूपों का समर्थन करता है।

इस एक्सटेंशन को बेहतर बनाने के लिए, कृपया प्लगइन में पाई गई किसी भी समस्या की रिपोर्ट करें। इसके अलावा, यदि आप इस कमजोरी के शोषण के लिए उपयोगी किसी खुलासा की गई Java लाइब्रेरी के बारे में मुझे रिपोर्ट करना चाहते हैं, और यदि मेरे पास समय हो, तो मैं अपने प्लगइन में इसके लिए एक सक्रिय चेक जोड़ दूंगा।
यह सॉफ़्टवेयर विशेष रूप से अकादमिक अनुसंधान के उद्देश्यों और प्रभावी रक्षात्मक तकनीकों के विकास के लिए बनाया गया है, और इसका उद्देश्य सिस्टम पर हमला करने के लिए उपयोग किया जाना नहीं है, सिवाय उन मामलों के जहाँ स्पष्ट रूप से अधिकृत किया गया हो। प्रोजेक्ट अनुरक्षक सॉफ़्टवेयर के दुरुपयोग के लिए ज़िम्मेदार या उत्तरदायी नहीं हैं। ज़िम्मेदारी से उपयोग करें।
कॉपीराइट (c) 2020 Java Deserialization Scanner
इसके द्वारा, इस सॉफ़्टवेयर और संबंधित दस्तावेज़ फ़ाइलों ("सॉफ़्टवेयर") की एक प्रति प्राप्त करने वाले किसी भी व्यक्ति को, सॉफ़्टवेयर से बिना किसी प्रतिबंध के निपटने की अनुमति निःशुल्क प्रदान की जाती है, जिसमें बिना किसी सीमा के सॉफ़्टवेयर की प्रतियों का उपयोग, प्रतिलिपि, संशोधन, विलय, प्रकाशन, वितरण, उपलाइसेंस और/या बेचने के अधिकार शामिल हैं, तथा उन व्यक्तियों को भी यह अनुमति दी जाती है जिन्हें सॉफ़्टवेयर प्रदान किया गया है, निम्नलिखित शर्तों के अधीन:
उपरोक्त कॉपीराइट नोटिस और यह अनुमति नोटिस सॉफ़्टवेयर की सभी प्रतियों या महत्वपूर्ण भागों में शामिल किए जाएंगे।
सॉफ़्टवेयर "जैसा है" प्रदान किया जाता है, किसी भी प्रकार की वारंटी के बिना, व्यक्त या निहित, जिसमें बिना किसी सीमा के व्यापारिकता, किसी विशेष उद्देश्य के लिए उपयुक्तता और अनुल्लंघनीयता की वारंटी शामिल हैं। किसी भी स्थिति में लेखक या कॉपीराइट धारक किसी भी दावे, क्षति या अन्य दायित्व के लिए उत्तरदायी नहीं होंगे, चाहे वह अनुबंध, टोर्ट या अन्यथा की कार्रवाई में हो, जो सॉफ़्टवेयर से या सॉफ़्टवेयर के उपयोग या अन्य व्यवहार से उत्पन्न या संबंधित हो।