
कैनॉनिकल के snapd डेमॉन के REST API में "Dirty_Sock" (CVE-2019-7304) नामक कमजोरी का शोषण करना।
Canonical के snapd डेमॉन (Ubuntu Linux में एक डिफ़ॉल्ट सेवा) के REST API में "Dirty_Sock" (CVE-2019-7304) नामक कमजोरी का शोषण करके रूट एक्सेस प्राप्त करना।
Ramil Mustafayev की गाइड: https://kryptohaker.medium.com/linux-privilege-escalation-via-snapd-using-dirty-sock-exploit-and-demonstration-of-cve-2019-7304-892716cf99ca
यह कमजोरी snapd संस्करण 2.37 से पुराने संस्करणों में शोषित की गई थी, क्योंकि इसके UNIX सॉकेट पर एक्सेस नियंत्रण करते समय रिमोट सॉकेट पते का गलत मान्यीकरण और पार्सिंग किया गया था। इसने उस समय कुछ Unix और Linux डिस्ट्रो को भी प्रभावित किया (जैसे, Ubuntu 16.04)। इसलिए, इस शोषण को लागू करने के लिए, हमें snapd 2.32 और Ubuntu 16.04 की आवश्यकता है।
मैंने snapd 2.32 का Debian पैकेज https://launchpad.net/ubuntu/+source/snapd से प्राप्त किया।

पहले, मैं Ubuntu मशीन की जाँच करता हूँ कि क्या यह शोषण के लिए कमजोर है, कमांड cat /etc/lsb-release (जो Ubuntu संस्करण और उसके विवरण को दिखाता है) और uname -a (जो वर्तमान कंप्यूटर और ऑपरेटिंग सिस्टम की जानकारी की जाँच करता है) का उपयोग करके। फिर, हम सुनिश्चित हैं कि यह मशीन शोषण योग्य है।

अगला कदम systemctl start snapd कमांड का उपयोग करके snapd सेवा शुरू करना है (वास्तव में, जब हमलावर इस दोष का शोषण करते हैं, तो snapd सेवा को एडमिन द्वारा शुरू किया जाना चाहिए, अन्यथा वे इसे सफलतापूर्वक लॉन्च नहीं कर पाएंगे)। फिर, हम यह सुनिश्चित करने के लिए snapd का संस्करण जांच सकते हैं कि यह कमजोर है।

अगला, मैं कमांड id (उपयोगकर्ता और समूह जानकारी प्रदर्शित करता है) और tail /etc/passwd (/etc/passwd फ़ाइल का उपयोग प्रत्येक पंजीकृत उपयोगकर्ता का रिकॉर्ड रखने के लिए किया जाता है) का उपयोग करके उपयोगकर्ता के विशेषाधिकारों की जाँच करूंगा। नीचे दिए गए परिणाम दिखाते हैं कि "coby" उपयोगकर्ता नाम वाला हमलावर एक सामान्य उपयोगकर्ता है, जिसके पास सिस्टम तक सबसे कम पहुँच है।

इस हमले को चलाने के लिए, हम dirty_sock स्क्रिप्ट का उपयोग करेंगे, जिसके दो संस्करण हैं, और https://github.com/initstring/dirty_sock से प्राप्त की गई है। जबकि संस्करण एक को आउटबाउंड इंटरनेट कनेक्शन और SSH सेवा चलाने की आवश्यकता होती है, संस्करण दो को बिना किसी आवश्यकता के सीधे चलाया जा सकता है।
dirty_sockv2.py में, जिसका उपयोग इस शोषण में किया जाएगा, कुछ प्रमुख घटकों पर ध्यान केंद्रित किया जाना चाहिए। इस स्क्रिप्ट का पहला प्रमुख घटक चर TROJAN_SNAP है, जो एक base64-एन्कोडेड स्ट्रिंग है जो एक इंस्टॉल करने योग्य snap पैकेज का प्रतिनिधित्व करता है। यह पैकेज एक खाली "devmode" snap है जिसमें इंस्टॉल हुक में एक bash स्क्रिप्ट है, जो एक नया उपयोगकर्ता बनाएगी ("devmode" (डेवलपर मोड) एक विशेष इंस्टॉलेशन मोड है जो snaps को विकास और डिबगिंग उद्देश्यों के लिए सख्त एकांतवास को बायपास करने की अनुमति देता है)।

इस स्क्रिप्ट में एक और महत्वपूर्ण घटक create_sockfile() फ़ंक्शन है। यह फ़ंक्शन "snapd's ucrednet.go" फ़ाइल में असुरक्षित पार्सिंग का शोषण करके एक रैंडम सॉकेट फ़ाइल उत्पन्न करता है और ;uid=0; डालता है, जिससे हम UID वेरिएबल को ओवरराइट कर सकते हैं।

इस शोषण को लागू करने के लिए, मैं बस टर्मिनल में dirty_sockv2.py निष्पादित करता हूँ। dirty_sock शोषण को सफलतापूर्वक चलाने के बाद, हम देख सकते हैं कि स्क्रिप्ट द्वारा समान पासवर्ड वाला एक dirty_sock खाता स्वचालित रूप से बनाया गया था।

फिर, मैं पंजीकृत उपयोगकर्ताओं की सूची देखने के लिए /etc/passwd की जाँच करता हूँ, और देखता हूँ कि "dirty_sock" नाम का एक नया उपयोगकर्ता बनाया गया था।

su कमांड का उपयोग करके, मैं खोजे गए क्रेडेंशियल का उपयोग करके "dirty_sock" खाते में लॉग इन कर सकता हूँ। सफलतापूर्वक लॉग इन करने के बाद, मैं इस उपयोगकर्ता के विशेषाधिकारों की जाँच कर सकता हूँ और देख सकता हूँ कि यह sudo समूह में है। इसका मतलब है कि हमलावर पहले ही सिस्टम का पूर्ण नियंत्रण प्राप्त कर चुका है और सर्वोच्च विशेषाधिकारों के साथ कुछ भी कर सकता है।

इस कमजोरी का CVSS स्कोर 8.8 (उच्च गंभीरता) है, जिसका अर्थ है कि यदि इसका शोषण किया जाता है तो यह सिस्टम पर बड़ा प्रभाव डाल सकता है। इस कमजोरी की उच्च गंभीरता है, क्योंकि इसके शोषण के लिए उच्च विशेषाधिकार की आवश्यकता नहीं है। जब किसी हमलावर के पास सिस्टम पर पहले से ही कुछ पैर जमाए हुए हैं (जैसे, कम-विशेषाधिकार वाला उपयोगकर्ता), तो वे विशेषाधिकारों को रूट तक बढ़ा सकते हैं, जिससे यह कमजोरी एक गंभीर स्थानीय सुरक्षा खतरा बन जाती है, विशेष रूप से मल्टी-यूज़र या क्लाउड वातावरण में।