
CVE-2022-22965 (Spring4Shell) का गहन तकनीकी विश्लेषण, पर्यावरण सेटअप, डीबग वॉकथ्रू, और शैक्षिक प्रयोगशाला अभ्यास के लिए एक्सप्लॉइट श्रृंखला विवरण के साथ।
Spring4Shell Spring Framework के Spring Core पर मौजूद एक CVE का नाम है।
CVSS 3.x स्कोर 9.8 के साथ, इस दोष को उच्चतम जोखिम स्तर (critical) में वर्गीकृत किया गया है। यह दोष हमलावर को दूरस्थ कोड निष्पादन करने और दोष युक्त सर्वर को नियंत्रित करने की अनुमति देता है।
इंटरनेट पर Spring Core की लोकप्रियता और Spring4Shell के गंभीर प्रभाव को देखते हुए, विशेषज्ञों का मानना है कि इस दोष का प्रभाव Log4shell से कम नहीं है।
Spring4Shell इंटरनेट पर Spring Framework का उपयोग करने वाले सभी वेब अनुप्रयोगों को प्रभावित नहीं करता है, बल्कि इसके लिए वेब एप्लिकेशन में निम्नलिखित तत्वों का होना आवश्यक है:
मेरे द्वारा सेटअप किए गए वातावरण के पैरामीटर इस प्रकार हैं:
Apache Tomcat स्थापित करें
जैसा ऊपर बताया गया है, मैं Kali 2021.4a और Apache Tomcat 9.0.45 का उपयोग कर रहा हूँ। यदि आप Apache Tomcat स्थापित करना नहीं जानते हैं और Kali Linux पर स्थापित करना चाहते हैं, तो आप इस लिंक का संदर्भ ले सकते हैं।
नोट: लिंक https://mirror.kiu.ac.ug/apache/tomcat/tomcat-9/v9.0.45/bin/apache-tomcat-9.0.45.tar.gz को https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.45/bin/apache-tomcat-9.0.45.tar.gz से बदलें
IDE चुनें
हमें प्रोजेक्ट को कोड करने, .war फ़ाइल के रूप में पैकेज करने और एक अत्यंत महत्वपूर्ण कार्य डीबग करने के लिए एक IDE की आवश्यकता है। मैं Intellij का उपयोग कर रहा हूँ, आप Eclipse या Netbeans आदि का उपयोग कर सकते हैं। बशर्ते वह IDE Java का समर्थन करता हो।
एक सरल दोष युक्त प्रोजेक्ट बनाएं
मेरा प्रोजेक्ट बहुत सरल है, इसमें शामिल हैं:
एक मॉडल HelloWorld.java

एक नियंत्रक HelloWorldController.java

एक व्यू hello.jsp

.war फ़ाइल बनाएँ
प्रोजेक्ट को पैकेज करने के लिए, इस प्रकार करें: Build -> Build Artifacts -> helloworld:war -> Build.
बिल्ड सफलतापूर्वक पूर्ण होने तक प्रतीक्षा करें, इस समय प्रोजेक्ट में एक नया फ़ोल्डर out दिखाई देगा, आप ./out/artifacts/your_war_name/ में जाएँ और एक फ़ाइल your_war_name.war देखेंगे, यह .war फ़ाइल संकलित और पैक किया गया वेब प्रोजेक्ट है, इस फ़ाइल का उपयोग Apache Tomcat जैसे Java Servlet पर डिप्लॉय करने के लिए किया जा सकता है।
यदि Build Artifacts धुंधला है (Build Artifacts नहीं किया जा सकता) तो इस प्रोजेक्ट के लिए Build Artifacts सेटअप नहीं किया गया है, इस पर जाएँ: File -> Project Structure -> Artifacts -> सभी मौजूदा आर्टिफैक्ट्स हटाएँ -> Add (+) -> Web Application: Exploded -> From Modules... -> OK (Exploded बनाना समाप्त करें) > Add (+) -> Web Application: Archive -> For 'helloworld:war exploded' -> OK। फिर Build Artifacts को पुनः निष्पादित करें।
डिप्लॉय और डीबग सेटअप
डिप्लॉय
Apache Tomcat पर .war फ़ाइल डिप्लॉय करने के लिए, बस .war फ़ाइल को Apache Tomcat निर्देशिका के अंदर /webapps फ़ोल्डर में कॉपी करें (उदाहरण: मेरे लिए, मैं helloworld.war फ़ाइल (आसानी से कॉल करने के लिए नाम बदल दिया) को /opt/tomcat/apache-tomcat-9.0.45/webapps/ फ़ोल्डर में कॉपी करूँगा)। फिर, Tomcat सर्वर को 2 तरीकों से प्रारंभ करें (Linux के लिए):
डिप्लॉय करने के बाद, http://localhost:8080/helloworld पर जाएँ
डीबग सेटअप
Tomcat को डीबग (रिमोट) सेटअप करने के लिए, निम्नानुसार करें:
सर्वर पक्ष:
catalina.sh फ़ाइल खोलें और JPDA_ADDRESS पैरामीटर के मान को localhost से वर्चुअल मशीन के IP में बदलें

Tomcat सर्वर को /opt/tomcat/apache-tomcat-9.0.45/bin/catalina.sh jpda start का उपयोग करके पुनरारंभ करें। इस समय, HTTP सर्वर के लिए पोर्ट 8080 खोलने के अलावा, Tomcat हमें कनेक्ट करने और डीबग करने के लिए एक अतिरिक्त पोर्ट 8000 खोलेगा
नोट: इस डीबग भाग में, मैं Windows 10 पर Intellij चला रहा हूँ और Kali वर्चुअल मशीन पर Tomcat चला रहा हूँ, इसलिए JPDA_ADDRESS बदलने की आवश्यकता है। यदि आप एक ही मशीन पर Intellij और Windows 10 दोनों सेटअप करते हैं तो बदलने की आवश्यकता नहीं है।
Intellij पक्ष:
Run -> Edit Configurations... पर जाएँ -> Add (+) -> Remote JVM Debug
नाम दें -> Host और Port को उस IP और पोर्ट में बदलें जो आपने catalina.sh फ़ाइल में बदला था -> OK -> Shift + F9 (डीबग प्रारंभ करें)

पहले, मैं डीबग करने के लिए अपने द्वारा उपयोग किए जा रहे प्रोजेक्ट का विश्लेषण करूँगा, जैसा ऊपर बताया गया है, यह प्रोजेक्ट बस सरल है:
मेरे पास एक उदाहरण है:
