
DirtyPipe (CVE-2022-0847) एक्सप्लॉइट, Rust में लिखा गया
अस्वीकरण
यह कोड केवल शैक्षिक और शोध उद्देश्यों के लिए है।
इसका उपयोग उन सिस्टम पर न करें जिनके स्वामी आप नहीं हैं या जिनके परीक्षण की अनुमति आपके पास नहीं है।
लेखक इस कोड के उपयोग से होने वाले किसी भी दुरुपयोग, क्षति, या कानूनी परिणामों के लिए जिम्मेदार नहीं है।
इस एक्सप्लॉइट का राइटअप मेरे ब्लॉग पर देखें। यह DirtyPipe (CVE-2022-0847) एक्सप्लॉइट का एक कार्यान्वयन है, जिसे मैंने Max Kellermann के राइटअप के आधार पर Rust में लिखा है। यह प्रोग्राम आपको विशेष फ़ाइलों को ओवरराइट करने या विशेषाधिकार बढ़ाने के लिए किसी SUID बाइनरी को ओवरराइट करने की सुविधा देता है।
passwd) को ओवरराइट करें/tmp में बैकअप लेंसबसे पहले एक इनपुट फ़ाइल बनाएँ। इस फ़ाइल का डेटा टारगेट को ओवरराइट करने के लिए उपयोग किया जाएगा। फिर बस निम्नलिखित चलाएँ:
./dirtypipe_exploit -m overwrite -i input.txt -o target_file -b offset
जहाँ offset, फ़ाइल में लेखन शुरू करने के लिए बाइट्स में ऑफ़सेट है। भेद्यता की प्रकृति के कारण, ऑफ़सेट पेज बाउंड्री पर नहीं होना चाहिए और लेखन पेज बाउंड्री को पार नहीं कर सकता।
SUID मोड निर्दिष्ट SUID बाइनरी को दिए गए ELF पेलोड से बदल देगा। suid ELF इस रिपॉजिटरी की रिलीज़ में प्रदान किया गया है, और जब तक विकल्पों में अन्यथा निर्दिष्ट न किया जाए, एक्सप्लॉइट द्वारा इसका उपयोग किया जाएगा।
इसके अतिरिक्त, आप इसे स्वयं भी जनरेट कर सकते हैं, या gen_suid.py pwntools स्क्रिप्ट और loader.asm फ़ाइल का उपयोग करके पेलोड को संशोधित कर सकते हैं। इस विकल्प पर नीचे चर्चा की जाएगी।
एक्सप्लॉइट टारगेट को डिफ़ॉल्ट रूप से /usr/bin/passwd पर सेट करता है।
/usr/bin/passwd को प्रदान किए गए पेलोड से बदलने के लिए निम्नलिखित चलाएँ (रूट के रूप में एक शेल स्पॉन करता है):
./dirtypipe_exploit -m suid
फिर रूट शेल पाने के लिए /usr/bin/passwd चलाएँ।
अपना स्वयं का पेलोड जनरेट करने के लिए, इन चरणों का पालन करें:
gen_suid.py स्क्रिप्ट चलाएँ, जो रूट शेल स्पॉन करने वाला पेलोड (shellcode.bin) जनरेट करने के लिए pwntools का उपयोग करती है। इसे जैसा आप उचित समझें, संशोधित करें।nasm -f bin -o [PAYLOAD_NAME] loader.asm चलाकर ELF बाइनरी पेलोड बनाएँ। यह shellcode.bin फ़ाइल को एक निष्पादनयोग्य (executable) में बदल देगा।./dirtypipe_exploit -m suid -i [PAYLOAD_NAME] -o [TARGET_FILE] चलाएँ।STALKR's BLOG के लेखक को 64-bit Tiny ELF हेडर (यहाँ) के लिए धन्यवाद।