
सक्रिय और निष्क्रिय स्कैन का उपयोग करके Java और .NET अनुप्रयोगों में डिसीरियलाइज़ेशन समस्याओं को स्वचालित रूप से पहचानें।
एक Burp Suite एक्सटेंशन जो सीरियलाइज़ेशन लाइब्रेरीज़/API का पता लगाने और उनका शोषण करने में सहायता करता है।
यह उपयोगी एक्सटेंशन मूल रूप से Nick Bloor (@nickstadb) द्वारा NCC Group के लिए विकसित किया गया था और मुख्य रूप से Alvaro Muñoz और Oleksandr Mirosh के काम पर आधारित है, Friday the 13th: JSON Attacks, जिसे उन्होंने Black Hat USA 2017 और DEF CON 25 में प्रस्तुत किया था। अपने काम में उन्होंने Java और .NET के लिए JSON और XML सीरियलाइज़ेशन लाइब्रेरीज़ की समीक्षा की और पाया कि उनमें से कई मनमानी रनटाइम वस्तुओं के सीरियलाइज़ेशन का समर्थन करती हैं और परिणामस्वरूप वे कई सीरियलाइज़ेशन प्रौद्योगिकियों की तरह ही कमजोर हैं - कोड के स्निपेट (POP गैजेट) जो डिसीरियलाइज़ेशन के दौरान या तुरंत बाद निष्पादित होते हैं, सीरियलाइज़ किए गए ऑब्जेक्ट के गुणों का उपयोग करके नियंत्रित किए जा सकते हैं, जो अक्सर मनमानी कोड या कमांड निष्पादन की संभावना को खोलते हैं।
YAML और AMF सहित अधिक प्रारूपों का समर्थन करने वाले अतिरिक्त मॉड्यूल भी शामिल हैं, जो पेपर Java Unmarshaller Security - Turning your data into code execution और टूल marshalsec पर आधारित हैं, जो Moritz Bechler द्वारा है।
यह Burp Suite एक्सटेंशन कमजोर लाइब्रेरीज़ की पहचान और शोषण के लिए पैसिव और एक्टिव दोनों प्रकार की स्कैनिंग लागू करता है।
Freddy संभावित रूप से खतरनाक सीरियलाइज़ेशन लाइब्रेरीज़ और API के उपयोग का पता लगा सकता है, HTTP अनुरोधों में टाइप स्पेसिफायर या अन्य हस्ताक्षरों को देखकर और लक्ष्य लाइब्रेरीज़ द्वारा जारी अपवादों के लिए HTTP प्रतिक्रियाओं की निगरानी करके। उदाहरण के लिए लाइब्रेरी FastJson सीरियलाइज़ किए गए ऑब्जेक्ट के प्रकार को निर्दिष्ट करने के लिए एक JSON फ़ील्ड $types का उपयोग करती है।
Freddy में एक्टिव स्कैनिंग कार्यक्षमता शामिल है जो प्रभावित लाइब्रेरीज़ का पता लगाने और जहां संभव हो, शोषण करने का प्रयास करती है।
एक्टिव स्कैनिंग तीन विधियों का उपयोग करके कमजोर लाइब्रेरीज़ का पता लगाने का प्रयास करती है: अपवाद-आधारित, समय-आधारित और Collaborator-आधारित।
अपवाद-आधारित एक्टिव स्कैनिंग में, Freddy HTTP अनुरोध में डेटा सम्मिलित करता है जो ज्ञात लक्ष्य-विशिष्ट अपवाद या त्रुटि संदेश को ट्रिगर करना चाहिए। यदि यह त्रुटि संदेश एप्लिकेशन की प्रतिक्रिया में देखा जाता है तो एक मुद्दा उठाया जाता है।
कुछ मामलों में समय-आधारित पेलोड का उपयोग पहचान के लिए किया जा सकता है क्योंकि डिसीरियलाइज़ेशन के दौरान ऑपरेटिंग सिस्टम कमांड निष्पादन ट्रिगर होता है और यह क्रिया तब तक निष्पादन को अवरुद्ध करती है जब तक OS कमांड समाप्त नहीं हो जाता। Freddy ऐसे मामलों में समय विलंब उत्पन्न करने के लिए ping [-n|-c] 21 127.0.0.1 युक्त पेलोड का उपयोग करता है।
Collaborator-आधारित पेलोड या तो Burp Suite Collaborator द्वारा उत्पन्न डोमेन नाम को हल करने के लिए nslookup कमांड जारी करके, या डोमेन नाम से Java एप्लिकेशन में दूरस्थ क्लास लोड करने का प्रयास करके काम करते हैं। Freddy हर 60 सेकंड में नए Collaborator मुद्दों की जाँच करता है और उन्हें RCE (Collaborator) के साथ मुद्दों की सूची में चिह्नित करता है।
वर्तमान में निम्नलिखित लक्ष्य समर्थित हैं (v2.0 में इटैलिक नए हैं):
Java
.NET
agpl-3.0 के तहत जारी, अधिक जानकारी के लिए LICENSE देखें
Freddy gradle बिल्ड सिस्टम का उपयोग करता है।
जार बनाने के लिए, आपको केवल रूट में gradle jar चलाने की आवश्यकता है।
यह परीक्षण चलाएगा और यदि सब कुछ सही है तो build/libs निर्देशिका में जार फ़ाइल बनाएगा।