
Docker एक्सप्लॉइट
यह रिपॉज़िटरी एक स्व-निहित, इंटरैक्टिव डॉकर वातावरण प्रदान करती है, जिससे "डर्टी पाइप" विशेषाधिकार वृद्धि (privilege escalation) भेद्यता को सुरक्षित रूप से प्रदर्शित और विश्लेषित किया जा सके। इसे सुरक्षा पेशेवरों के लिए एक शैक्षिक उपकरण के रूप में डिज़ाइन किया गया है, ताकि वे एक नियंत्रित वातावरण में एक गंभीर कर्नेल-स्तरीय एक्सप्लॉइट की कार्यप्रणाली को समझ सकें।
डर्टी पाइप लिनक्स कर्नेल में खोजी गई एक गंभीर भेद्यता थी (जो संस्करण 5.8 से आगे के संस्करणों को प्रभावित करती थी)। यह एक स्थानीय, अन-प्रिविलेज्ड उपयोगकर्ता को किसी भी केवल-पठनीय (read-only) फ़ाइल में डेटा ओवरराइट करने की अनुमति देती थी।
इसका प्रभाव गंभीर है: /etc/passwd या किसी SUID बाइनरी जैसी संवेदनशील फ़ाइल को ओवरराइट करके, एक हमलावर आसानी से अपने विशेषाधिकारों को root तक बढ़ा सकता था, और सिस्टम पर पूर्ण नियंत्रण प्राप्त कर सकता था। यह भेद्यता विशेष रूप से खतरनाक थी क्योंकि यह मानक फ़ाइल अनुमति जाँचों को दरकिनार कर देती थी, जो लिनक्स में एक मौलिक सुरक्षा नियंत्रण है।
यह प्रोजेक्ट एक सुरक्षित, पृथक और जानबूझकर भेद्य-युक्त वातावरण बनाने के लिए डॉकर का उपयोग करता है। यह किसी को भी बिना अपने होस्ट मशीन को जोखिम में डाले एक्सप्लॉइट का अध्ययन करने की अनुमति देता है।
मुख्य घटक हैं:
Dockerfile: हमारे भेद्य-युक्त कंटेनर के लिए ब्लूप्रिंट को परिभाषित करता है। यह एक पुरानी आधार इमेज (debian:bullseye-20210927-slim) का उपयोग करता है, जो डर्टी पाइप के प्रति संवेदनशील कर्नेल के लिए जानी जाती है, और सेटअप प्रक्रिया को स्वचालित करता है।exploit.c: C कोड जो एक्सप्लॉइट लॉजिक को लागू करता है, जो मैक्स केलरमैन के मूल प्रूफ-ऑफ-कॉन्सेप्ट पर आधारित है।Makefile: C कोड को कंटेनर के भीतर एक निष्पादन योग्य बाइनरी में संकलित करने के लिए एक सरल मेकफ़ाइल।यह वॉकथ्रू आपको वातावरण बनाने और एक्सप्लॉइट निष्पादित करने की प्रक्रिया में मार्गदर्शन करेगा।
पूर्वापेक्षाएँ: आपके सिस्टम पर डॉकर स्थापित और चालू होना चाहिए।
अपना टर्मिनल खोलें और इस प्रोजेक्ट को क्लोन करें।
git clone https://github.com/mrchucu1/CVE-2022-0847-Docker.git
cd CVE-2022-0847-Docker
कंटेनर इमेज बनाने के लिए docker build कमांड का उपयोग करें। Dockerfile सभी निर्भरताओं को संभालेगा और एक्सप्लॉइट कोड को संकलित करेगा।
docker build -t dirty-pipe-demo .
अब, कंटेनर को इंटरैक्टिव रूप से चलाएँ। --rm फ्लैग सुनिश्चित करता है कि बाहर निकलने पर कंटेनर हटा दिया जाए, और -it आपको एक इंटरैक्टिव शेल प्रदान करता है।
docker run --rm -it dirty-pipe-demo
आपको कंटेनर के अंदर एक अन-प्रिविलेज्ड उपयोगकर्ता (hacker@...:/$) के रूप में एक शेल में डाल दिया जाएगा।
अब, पहले से संकलित एक्सप्लॉइट को निष्पादित करें:
# You are currently an unprivileged user.
# Your prompt looks like this: hacker@<container_id>:/$
#
# Now run the exploit...
./exploit
सफलता! एक्सप्लॉइट आपको रूट शेल प्रदान करने के लिए एक SUID बाइनरी को ओवरराइट करता है। आपका टर्मिनल प्रॉम्प्ट $ से # में बदल जाएगा, जो दर्शाता है कि अब आपके पास रूट विशेषाधिकार हैं।
# The exploit has succeeded.
# Your prompt is now a root shell: # whoami
root
#
यह प्रोजेक्ट केवल एक स्क्रिप्ट चलाने से कहीं अधिक है; यह मेरे क्लाउड सुरक्षा इंजीनियर के कार्य से संबंधित महत्वपूर्ण सुरक्षा सिद्धांतों का एक व्यावहारिक प्रदर्शन है:
यह प्रोजेक्ट और इसका कोड केवल शैक्षिक और शोध उद्देश्यों के लिए है। किसी भी ऐसे सिस्टम पर इस एक्सप्लॉइट का उपयोग करने का प्रयास न करें जिसके लिए आपके पास स्पष्ट, अधिकृत अनुमति नहीं है।