
JDK 9+ पर चलने वाला Spring MVC या Spring WebFlux एप्लिकेशन डेटा बाइंडिंग के माध्यम से रिमोट कोड निष्पादन (RCE) की चपेट में आ सकता है। विशिष्ट शोषण के लिए आवश्यक है कि एप्लिकेशन Tomcat पर WAR डिप्लॉयमेंट के रूप में चले। यदि एप्लिकेशन Spring Boot निष्पादन योग्य jar के रूप में तैनात किया गया है, अर्थात डिफ़ॉल्ट, तो यह शोषण के प्रति संवेदनशील नहीं है। हालाँकि, भेद्यता की प्रकृति अधिक सामान्य है, और इसका शोषण करने के अन्य तरीके भी हो सकते हैं।
CVE-2022-22965 (Spring4Shell, SpringShell) Spring Framework में एक भेद्यता है जो डेटा बाइंडिंग कार्यक्षमता का उपयोग करके किसी HTTP अनुरोध में संग्रहीत डेटा को किसी एप्लिकेशन द्वारा उपयोग किए जाने वाले कुछ ऑब्जेक्ट्स से बाँधती है। यह बग getCachedIntrospectionResults विधि में मौजूद है, जिसका उपयोग HTTP अनुरोध के माध्यम से उन ऑब्जेक्ट्स के क्लास नाम पास करके उन तक अनधिकृत पहुँच प्राप्त करने के लिए किया जा सकता है। जब विशेष ऑब्जेक्ट क्लास का उपयोग किया जाता है, तो यह डेटा रिसाव और रिमोट कोड निष्पादन के जोखिम पैदा करता है। यह भेद्यता लंबे समय से बंद CVE-2010-1622 के समान है, जहाँ फिक्स के रूप में क्लास नाम जाँच जोड़ी गई थी ताकि नाम classLoader या protectionDomain से मेल न खाए।
CVSSv3 प्रणाली के अनुसार, इसे CRITICAL गंभीरता के रूप में आंका गया है।
नीचे CVE-2022-22965 के लिए पता लगाने के अवसर दिए गए हैं जिनका उपयोग भेद्यता की पहचान करने के लिए किया जा सकता है।
भेद्यता के लिए वर्तमान शर्तें (जैसा कि Spring की भेद्यता घोषणा में बताया गया है) निम्नानुसार संक्षेपित की जा सकती हैं:
python3 exploit.py http://10.10.10.10/
नोट: यहाँ ट्रेलिंग स्लैश बहुत महत्वपूर्ण है!
संपर्क फ़ॉर्म का "action" देखें (हमारे लिए उपलब्ध एकमात्र POST अनुरोध)।
<form id="contactForm" action="/" method="post">
action "/" है, जिसका अर्थ है कि हमारा लक्षित URL बस यह होगा: http://10.10.10.10/