
Apache Struts 2.0 RCE vulnerability - एक हमलावर को content-type हेडर के माध्यम से वेब एप्लिकेशन में OS कमांड इंजेक्ट करने की अनुमति देता है
Apache Struts 2.0 RCE भेद्यता
यह CVE-2017-5638 का शोषण करने के लिए एक स्क्रिप्ट है - यह एक हमलावर को content-type हेडर के माध्यम से वेब एप्लिकेशन में OS कमांड इंजेक्ट करने की अनुमति देता है। Apache Struts 2 Java EE वेब एप्लिकेशन विकसित करने के लिए एक ओपन-सोर्स वेब एप्लिकेशन फ्रेमवर्क है। यह डेवलपर्स को मॉडल-व्यू-कंट्रोलर (MVC) आर्किटेक्चर अपनाने के लिए प्रोत्साहित करने हेतु Java Servlet API का उपयोग और विस्तार करता है।
मार्च 2017 के अंतिम सप्ताह के दौरान, "Nike Zheng" नाम के एक Apache Struts हैकर ने एक सार्वजनिक प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट पोस्ट किया, जिसमें दिखाया गया कि कोई व्यक्ति कितनी आसानी से Apache Struts 2 भेद्य सर्वर पर दूरस्थ रूप से ऑपरेटिंग सिस्टम कमांड निष्पादित कर सकता है।
यह भेद्यता, CVE-2017-5638 - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-5638, HTTP अनुरोध में एक विशेष रूप से तैयार Content-Type मान के माध्यम से अप्रमाणित रिमोट कोड निष्पादन (RCE) की अनुमति देती है। एक हमलावर Content-Type के लिए एक अमान्य मान बना सकता है जो भेद्य सॉफ़्टवेयर को एक अपवाद फेंकने का कारण बनेगा। जब सॉफ़्टवेयर प्रदर्शन के लिए त्रुटि संदेश तैयार कर रहा होता है, Apache Struts Jakarta Multipart पार्सर में एक दोष के कारण दुर्भावनापूर्ण Content-Type मान प्रदर्शित होने के बजाय निष्पादित हो जाता है।
इस सार्वजनिक एक्सप्लॉइट के जारी होने के बाद से, भेद्य Apache सर्वरों की खोज करने वाले बड़ी संख्या में स्कैन देखे गए। चूंकि एक्सप्लॉइट को निष्पादित करना वास्तव में आसान है, कोई भी पूर्ण सहजता से भेद्य मशीनों का दूरस्थ रूप से शोषण कर सकता है। इस प्रकार बड़ी संख्या में स्कैन के बाद बार-बार शोषण की सूचना मिली।
हमारे एक ग्राहक चाहते थे कि हम उनके सभी IPs को स्कैन करें, क्योंकि वे बड़े पैमाने पर भेद्य Apache Struts 2 फ्रेमवर्क का उपयोग कर रहे थे और उनके पास सटीक रिकॉर्ड नहीं थे कि कौन से IP (वेब सर्वर) भेद्य Apache फ्रेमवर्क चला रहे थे। परीक्षण के लिए लगभग एक हज़ार IPs थे। ग्राहक ने सभी भेद्य डोमेन के साथ-साथ यह जानकारी भी प्रस्तुत करने की मांग की कि यह लिनक्स या विंडोज सर्वर है या नहीं। प्रत्येक IP को अलग-अलग स्कैन करने के थकाऊ कार्य से बचने के लिए, मैंने एक छोटी स्क्रिप्ट लिखी।
स्क्रिप्ट नीचे दिए गए कार्यों को जोड़ती है: