
Roundcube 1.0.0 <= 1.2.2 रिमोट कोड निष्पादन एक्सप्लॉइट और असुरक्षित कंटेनर
Roundcube एक व्यापक रूप से वितरित ओपन-सोर्स वेबमेल सॉफ़्टवेयर है जिसका उपयोग दुनिया भर के कई संगठनों और कंपनियों द्वारा किया जाता है। उदाहरण के लिए, SourceForge पर मिरर ने पिछले 12 महीनों में 260,000 से अधिक डाउनलोड गिने हैं, जो वास्तविक उपयोगकर्ताओं का केवल एक छोटा सा हिस्सा है। एक बार Roundcube किसी सर्वर पर स्थापित हो जाने पर, यह प्रमाणित उपयोगकर्ताओं को अपने वेब ब्राउज़र से ईमेल भेजने और प्राप्त करने के लिए एक वेब इंटरफ़ेस प्रदान करता है।
Roundcube 1.2.2 और उससे पहले के संस्करणों में, उपयोगकर्ता-नियंत्रित इनपुट बिना सैनिटाइज़ किए PHP के अंतर्निहित फ़ंक्शन mail() के पाँचवें तर्क में प्रवाहित होता है, जिसे सुरक्षा की दृष्टि से महत्वपूर्ण दस्तावेज़ित किया गया है। समस्या यह है कि mail() फ़ंक्शन का आह्वान PHP को sendmail प्रोग्राम निष्पादित करने का कारण बनेगा। पाँचवाँ तर्क इस निष्पादन में तर्क पारित करने की अनुमति देता है, जो sendmail का विन्यास करने की सुविधा देता है। चूँकि sendmail सभी मेल ट्रैफ़िक को एक फ़ाइल में लॉग करने के लिए -X विकल्प प्रदान करता है, एक हमलावर इस विकल्प का दुरुपयोग कर सकता है और लक्षित सर्वर की वेबरूट निर्देशिका में एक दुर्भावनापूर्ण PHP फ़ाइल उत्पन्न कर सकता है। निम्नलिखित कोड पंक्तियाँ इस भेद्यता को ट्रिगर करती हैं।
mail() फ़ंक्शन का उपयोग करने के लिए कॉन्फ़िगर किया जाना चाहिए (डिफ़ॉल्ट रूप से, यदि कोई SMTP निर्दिष्ट नहीं है [1])mail() फ़ंक्शन sendmail का उपयोग करने के लिए कॉन्फ़िगर किया गया है (डिफ़ॉल्ट रूप से, sendmail_path देखें [2])safe_mode बंद होने के लिए कॉन्फ़िगर किया गया है (डिफ़ॉल्ट रूप से, safe_mode देखें [3])ये आवश्यकताएँ विशेष रूप से कठोर नहीं हैं, जिसका अर्थ है कि इंटरनेट पर बहुत सारे कमजोर सिस्टम मौजूद थे।
अपने परीक्षण के लिए एक कमजोर वातावरण स्थापित करने हेतु आपको Docker इंस्टॉल करना होगा, और बस निम्नलिखित कमांड चलाएँ:
docker build -t vuln/cve-2016-9920 .
docker run --rm -it -p 80:80 vuln/cve-2016-9920
और यह आपके होस्ट पर 80 पोर्ट पर एक कमजोर वेब एप्लिकेशन चालू कर देगा।
Roundcube 1.2.2 और उससे पहले के संस्करणों में, उपयोगकर्ता-नियंत्रित इनपुट बिना सैनिटाइज़ किए PHP के अंतर्निहित फ़ंक्शन
mail()के पाँचवें तर्क में प्रवाहित होता है, जिसे सुरक्षा के संदर्भ में महत्वपूर्ण दस्तावेज़ित किया गया है। समस्या यह है किmail()फ़ंक्शन का आह्वान PHP को sendmail प्रोग्राम निष्पादित करने का कारण बनेगा। पाँचवाँ तर्क इस निष्पादन में अतिरिक्त पैरामीटर पारित करने की अनुमति देता है, जो sendmail का विन्यास करने की सुविधा देता है। चूँकि sendmail सभी मेल ट्रैफ़िक को एक फ़ाइल में लॉग करने के लिए-Xविकल्प प्रदान करता है, एक हमलावर इस विकल्प का दुरुपयोग कर सकता है और लक्षित सर्वर की वेबरूट निर्देशिका में एक दुर्भावनापूर्ण PHP फ़ाइल उत्पन्न कर सकता है। हालाँकि यह भेद्यता दुर्लभ है और व्यापक रूप से ज्ञात नहीं है, RIPS ने इसे सेकंडों के भीतर पहचान लिया। [4]
इस लक्ष्य का शोषण करने के लिए बस चलाएँ:
./exploit.py --host HOST --user USERNAME --pwd PASSWORD --path PATH --www_path WEB_DIRECTORY
यदि आप इस कमजोर इमेज का उपयोग कर रहे हैं, तो आप बस चला सकते हैं:
./exploit.py --host 127.0.0.1 --user username --pwd password --path roundcube --www_path "/var/www/html/roundcube"
शोषण के बाद, backdoor.php नामक एक फ़ाइल वेब निर्देशिका के रूट फ़ोल्डर में संग्रहीत की जाएगी। और एक्सप्लॉइट आपको एक शेल प्रदान करेगा जहाँ आप बैकडोर को कमांड भेज सकते हैं:
./exploit.py --host 127.0.0.1 --user username --pwd password --path roundcube --www_path "/var/www/html/roundcube"
[+] CVE-2016-9920 exploit by t0kx
[+] Exploiting 127.0.0.1
[+] Target exploited, acessing shell at http://127.0.0.1/roundcube/backdoor.php
[+] Running whoami: www-data
[+] Done
यह दोष Robin Peraglie [4] द्वारा पाया गया था। इस शैक्षिक सामग्री का मुख्य पाठ और विचार opsxcq द्वारा बनाया गया था।
यह या पिछला प्रोग्राम केवल शैक्षिक उद्देश्य के लिए है। इसे बिना अनुमति के उपयोग न करें। सामान्य अस्वीकरण लागू होता है, विशेष रूप से यह तथ्य कि मैं (t0kx) इन प्रोग्रामों द्वारा प्रदान की गई जानकारी या कार्यक्षमता के प्रत्यक्ष या अप्रत्यक्ष उपयोग से होने वाली किसी भी क्षति के लिए उत्तरदायी नहीं हूँ। लेखक या कोई भी इंटरनेट प्रदाता इन प्रोग्रामों की सामग्री या दुरुपयोग, या उनके किसी भी व्युत्पन्न के लिए कोई जिम्मेदारी नहीं लेता है। इन प्रोग्रामों का उपयोग करके आप इस तथ्य को स्वीकार करते हैं कि इन प्रोग्रामों के उपयोग से होने वाली कोई भी क्षति (डेटा हानि, सिस्टम क्रैश, सिस्टम समझौता, आदि) t0kx की जिम्मेदारी नहीं है।