
CENG 325 - सूचना सुरक्षा और गोपनीयता के सिद्धांत
समूह सदस्य
@canumay @aslihann @ezgigucuyener @mburakdonmez
संदर्भ
Exploit DB - Apache Tika-server < 1.18 - कमांड इंजेक्शन
Rhino Security Labs - CVE-2018-1335 का शोषण: Apache Tika में कमांड इंजेक्शन
अस्वीकरण
शोषण कोड साइबर सुरक्षा शोधकर्ता David Yesland @Daveysec द्वारा लिखा गया है और इसका उपयोग शैक्षिक उद्देश्यों के लिए किया जाना चाहिए।
a. भेद्यता का संक्षिप्त विवरण
b. भेद्यता का शोषण करने का तरीका
भेद्यता को ट्रिगर करने के बाद किस प्रकार के हमलों को लागू किया जा सकता है: भेद्यता को ट्रिगर करने के बाद हम आसानी से एक रिवर्स शेल बना सकते हैं, और उस शेल के साथ हम मूल रूप से उन सभी कमांड को निष्पादित कर सकते हैं जो apache tika सर्वर चलाने वाले उपयोगकर्ता के लिए उपलब्ध हैं।
एक हमलावर भेद्यता का उपयोग करके असुरक्षित सिस्टम का शोषण कैसे करता है: सबसे पहले, हमलावर को यह निर्धारित करना चाहिए कि सर्वर apache tika सर्वर का असुरक्षित संस्करण चला रहा है या नहीं। फिर हमलावर असुरक्षित HTTP एंड पॉइंट पर PUT अनुरोध भेजने से पहले एक दुर्भावनापूर्ण HTTP हेडर और Jscript कोड उत्पन्न करता है, जो apache tika सर्वर को अपनी स्वयं की कार्यक्षमता का उपयोग करके दुर्भावनापूर्ण कोड निष्पादित करने का कारण बनता है।
क्या भेद्यता का उपयोग शोषण किट में किया जाता है: हाँ, यह भेद्यता Metasploit शोषण किट में उपलब्ध है।
a. एक शोषण कोड खोजें या तैयार करें जो भेद्यता का शोषण करता हो
b. असुरक्षित कोड के टुकड़ों को हाइलाइट करें और बताएं कि वे असुरक्षित क्यों हैं
apache tika सर्वर छवियों पर OCR चलाने के लिए अनुरोध में उपयोगकर्ता द्वारा प्रदान किए गए मानों के साथ निष्पादित करने के लिए एक कमांड तैयार करता है। यह उपयोगकर्ताओं को कमांड में हेरफेर करने और दुर्भावनापूर्ण कोड निष्पादित करने की अनुमति देता है। इस मामले में “config.getTesseractPath()” “X-Tika-OCRTesseractPath” हेडर को लाता है और इसे कमांड की शुरुआत में जोड़ता है। हालांकि “tesseract.exe” स्ट्रिंग उपयोगकर्ता द्वारा प्रदान किए गए पथ के अंत में जोड़ी जाती है, उपयोगकर्ता अपने पथ को ' “ ' (डबल कोट्स) से लपेट सकता है ताकि निम्नलिखित “tesseract.exe” स्ट्रिंग को हटा दिया जा सके। यह उपयोगकर्ता को सर्वर में किसी भी निष्पादन योग्य को चलाने की अनुमति देता है।
तैयार किया गया कमांड:
"calc.exe"tesseract.exe C:\Users\Test\AppData\Local\Temp\apache-tika3299124493942985299.tmp C:\Users\Test\AppData\Local\Temp\apache-tika7317860646082338953.tmp -l eng -psm 1 txt -c preserve_interword_spaces=0
विंडोज में निर्मित CScript.exe एक स्क्रिप्टिंग भाषा है जो एक स्क्रिप्ट के लिए फ़ाइल नाम लेती है और इसे चलाती है और अन्य तर्कों को अनदेखा करती है। यदि हम cscript के लिए बनाई गई एक स्क्रिप्ट प्रदान कर सकते हैं, तो हम इसे सर्वर में निष्पादित कर सकते हैं। apache tika सर्वर बॉडी में प्रदान की गई हमारी छवि लेता है और OCR चलाने के लिए इसे एक अस्थायी फ़ाइल में सहेजता है, इसलिए छवि बाइनरी भेजने के बजाय हम सीधे एक स्ट्रिंग भेज सकते हैं और स्ट्रिंग को इस तरह सहेजा जाएगा जैसे कि यह एक बाइनरी थी। लेकिन tika सर्वर बाइनरी की जांच करता है कि क्या यह एक छवि है, jp2 फ़ाइल प्रकार को छोड़कर, जिस स्थिति में इसे सीधे सहेजा जाता है। जो cscript निष्पादन योग्य को एक तर्क के रूप में पारित किया जाएगा। लेकिन फ़ाइल एक्सटेंशन अभी भी “.tmp” होगा, लेकिन हमें “. JScript” या “.vbs” की आवश्यकता है। इसे पार करने के लिए, हम cscript को “JScript” चलाने के लिए कह सकते हैं, चाहे फ़ाइल एक्सटेंशन कुछ भी हो। tika सर्वर “config.getPageSetMode()” को भी कमांड में पास करता है जो उपयोगकर्ता द्वारा X-Tika-OCRLanguage” हेडर में भेजा जाता है। यदि हम इसे स्ट्रिंग “//E:Jscript” से बदलते हैं, तो cscript फ़ाइल एक्सटेंशन की परवाह किए बिना स्क्रिप्ट को JScript के रूप में चलाएगा। और अंत में, बॉडी में प्रदान की गई स्ट्रिंग निष्पादित किए जाने वाला पेलोड होगा, जो सिस्टम शेल तक पूर्ण पहुंच प्राप्त करने के लिए दूसरे कंसोल को भी कॉल कर सकता है।
अंतिम तैयार किया गया कमांड:
"cscript.exe"tesseract.exe C:\Users\Test\AppData\Local\Temp\apache-tika3299124493942985299.tmp C:\Users\Test\AppData\Local\Temp\apache-tika7317860646082338953.tmp -l //E:Jscript -psm 1 txt -c preserve_interword_spaces=0
Jscript में शेल को कॉल करने के लिए एक सरल पेलोड:
var oShell = WScript.CreateObject("WScript.Shell");
var oExec = oShell.Exec('cmd /c calc.exe');
a. आपके द्वारा खोजे या तैयार किए गए शोषण कोड को निष्पादित करें:
Apache Tika Server 1.17 लक्ष्य वर्चुअल मशीन के अंदर चल रहा है।
हम अपनी होस्ट मशीन से IP “192.168.233.167” के साथ सर्वर तक पहुँच सकते हैं।
फिर हमने लक्ष्य मशीन के अंदर कैलकुलेटर चलाने के लिए पेलोड “calc.exe” के साथ तैयार किए गए शोषण कोड को निष्पादित किया, यह दिखाने के लिए कि हमारे पास लक्ष्य मशीन के अंदर किसी भी दुर्भावनापूर्ण कोड को निष्पादित करने की क्षमता है। यहां तक कि रिवर्स शेल की शक्ति के साथ हम लक्ष्य मशीन पर एक इंटरैक्टिव शेल सत्र बना सकते हैं।
b. शोषण कोड के निष्पादन के परिणाम क्या हैं:
जैसा कि हमने ऊपर इस शोषण के साथ समझाया, हम मूल रूप से लक्ष्य मशीन के अंदर कैलकुलेटर प्रोग्राम निष्पादित करते हैं, लेकिन रिमोट कोड निष्पादन की क्षमता के साथ हम Apache Tika Server चलाने वाले उपयोगकर्ता के विशेषाधिकारों के साथ लक्ष्य मशीन में जो चाहें कर सकते हैं। उदाहरण के लिए, हम उपयोगकर्ता फ़ाइलों तक पहुँच सकते हैं, उपयोगकर्ता की गतिविधि की निगरानी कर सकते हैं और यहां तक कि हम स्क्रीनशॉट ले सकते हैं या यदि मौजूद है तो वेबकैम से फोटो ले सकते हैं।
c. आप कैसे बता सकते हैं कि भेद्यता वास्तव में मौजूद है:
यह भेद्यता पहले से ही NIST जैसे विश्वसनीय स्रोतों द्वारा रिपोर्ट की गई है, यहां तक कि Apache द्वारा स्वयं पुष्टि और पैच की गई है। लेकिन यह साबित करने के लिए कि हम metasploit का उपयोग करके एक और PoC कर सकते हैं।
सबसे पहले, हमने पुष्टि की कि स्थापित संस्करण एक असुरक्षित संस्करण है।
संस्करण की पुष्टि करने के बाद, हम सही IP और पोर्ट के साथ अपने metasploit सत्र को कॉन्फ़िगर कर सकते हैं और यह सत्यापित करने के लिए “check” कमांड चला सकते हैं कि लक्ष्य असुरक्षित है या नहीं।
अंत में, हम शोषण शुरू करने के लिए “exploit” कमांड चला सकते हैं और शेल में “dir” टाइप करके पुष्टि कर सकते हैं कि शेल चालू है। यहाँ से एकमात्र सीमा Apache Tika सर्वर चलाने वाले उपयोगकर्ता के विशेषाधिकार हैं।