Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
Dirty-Pipe-Exploits — CVE-2022-0847(Dirty Pipe) भेद्यता शोषण | Kitploit
उपकरण/GitHubGitHub/gustavo-nogueira/dirty-pipe-exploits
विशेषाधिकार वृद्धिभेद्यता विश्लेषणशोषणलर्निंग और शिक्षाबाइनरी शोषणलैब और अभ्यास
GitHubgustavo-nogueira/dirty-pipe-exploits

Dirty-Pipe-Exploits

CVE-2022-0847(Dirty Pipe) भेद्यता शोषण

रिपॉजिटरी देखें
2123 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2022-0847 एक्सप्लॉइट्स

डर्टी पाइप

यह क्या है?

7 मार्च 2022 को मैक्स केलरमैन[2] द्वारा सार्वजनिक की गई, CVE-2022-0847 लिनक्स कर्नेल (संस्करण 5.8 से 5.16.11 के बीच) में एक कमजोरी है जो हमलावरों को केवल-पढ़ने या अपरिवर्तनीय फ़ाइलों को बदलने और पीड़ित सिस्टम पर अपने विशेषाधिकार बढ़ाने की अनुमति देती है। CVE-2022-0847 को डर्टी पाइप नाम दिया गया है और इसका CVSS स्कोर 7.8 (उच्च माना जाता है) है।

कमजोरी का शोषण कैसे काम करता है?

डर्टी पाइप कमजोरी को struct pipe_buffer[7] के flags विशेषता के तरीके में एक दोष के रूप में वर्णित किया गया है, जिसमें लिनक्स कर्नेल में copy_page_to_iter_pipe और push_pipe फ़ंक्शनों में उचित प्रारंभिकीकरण नहीं था, और इसलिए इसमें पुराने मान हो सकते थे। struct pipe_buffer के flags विशेषता में सेट की जा सकने वाली फ़्लैग में से एक PIPE_BUF_FLAG_CAN_MERGE नामक फ़्लैग है। यह इंगित करती है कि pipe_buffer में और डेटा का विलय अनुमत है या नहीं। इस प्रकार, जब डेटा को pipe_buffer में कॉपी किया जाता है, तो pipe_buffer में और डेटा जोड़ा जा सकता है यदि कॉपी किए गए पृष्ठ का आकार 4096 बाइट्स से कम हो।

पेज कैश संदर्भ में PIPE_BUF_FLAG_CAN_MERGE इंजेक्ट करके, पेज कैश में डेटा को ओवरराइट करना संभव हो गया, बस विशेष रूप से तैयार किए गए पाइप में नया डेटा लिखकर (यह प्रक्रिया आगे के पैराग्राफों में वर्णित की जाएगी)। इस प्रकार, एक अविशेषाधिकार प्राप्त स्थानीय उपयोगकर्ता इस दोष का उपयोग केवल-पढ़ने वाली फ़ाइलों द्वारा समर्थित पेज कैश में पृष्ठों को ओवरराइट/लिखने और इस प्रकार सिस्टम पर अपने विशेषाधिकार बढ़ाने के लिए कर सकता है।

ऐसा कहने के बाद, कमजोरी का शोषण करने के लिए, निम्नलिखित चरणों का पालन किया जाना चाहिए:

  1. एक पाइप बनाएं।
  2. पाइप को मनमाना डेटा से भरें (सर्कुलर ऐरे की सभी प्रविष्टियों में PIPE_BUF_FLAG_CAN_MERGE फ़्लैग सेट करने के लिए)।
  3. पाइप को खाली करें (सर्कुलर ऐरे की struct pipe_buffer के सभी इंस्टेंस में PIPE_BUF_FLAG_CAN_MERGE फ़्लैग सेट छोड़ते हुए)। सामान्यतः, फ़्लैग को रीसेट किया जाना चाहिए। हालांकि, डर्टी पाइप कमजोरी के कारण फ़्लैग 1 पर सेट रहता है।
  4. syscall splice का उपयोग करके एक केवल-पढ़ने वाली फ़ाइल को पाइप में स्थानांतरित करें।
  5. केवल-पढ़ने वाली फ़ाइल को संशोधित करें। चूंकि splice सिस्टम कॉल pass-by-reference विधि का उपयोग करता है, हमलावर PIPE_BUF_FLAG_CAN_MERGE फ़्लैग के कारण फ़ाइल को ओवरराइट कर सकता है।

एक्सप्लॉइट्स

निम्नलिखित कमांड से सब कुछ संकलित करें:

root@kitploit:~
make

एक्सप्लॉइट 1 - केवल-पढ़ने वाली फ़ाइलों को ओवरराइट करना

चलाना

root@kitploit:~
./exploit-1

विवरण

एक्सप्लॉइट 1, रिपॉजिटरी में फ़ाइल exploit-1.c में मौजूद, में /etc/passwd फ़ाइल में मौजूद रूट उपयोगकर्ता के पासवर्ड को ओवरराइट करना शामिल है (यह फ़ाइल उपयोगकर्ता खाते की जानकारी जैसे एन्क्रिप्टेड पासवर्ड रखती है) और अंत में रूट एक्सेस वाला एक टर्मिनल प्रदान करना। इसके लिए, निम्नलिखित आवश्यक था:

  1. /etc/passwd फ़ाइल का बैकअप लें।
  2. पाइप को PIPE_BUF_FLAG_CAN_MERGE फ़्लैग के साथ तैयार करें (जैसा कि ऊपर चरण 1, 2 और 3 में बताया गया है)।
  3. /etc/passwd फ़ाइल को पाइप में स्थानांतरित करें और इस फ़ाइल की सामग्री को एक ज्ञात नए रूट पासवर्ड से ओवरराइट करें (जैसा कि ऊपर चरण 4 और 5 में बताया गया है)।
  4. निर्धारित नए पासवर्ड से रूट के रूप में एक सत्र बनाएं।
  5. फिर, बैकअप से पासवर्ड को मूल मान पर रीसेट किया जाता है, इस प्रकार कोई निशान नहीं छोड़ता।
  6. अंत में, स्थापित रूट सत्र के साथ, रूट एक्सेस वाला एक शेल टर्मिनल जारी किया जाता है।

एक्सप्लॉइट 2 - SUID बाइनरी का अपहरण

SUID बाइनरी ढूंढना

root@kitploit:~
find / -perm -4000 2>/dev/null

चलाना

root@kitploit:~
./exploit-2 <path-of-suid-binary>

विवरण

एक्सप्लॉइट 2, रिपॉजिटरी में फ़ाइल exploit-2.c में मौजूद, में एक SUID बाइनरी को ओवरराइट और अपहरण करना शामिल है (इस प्रकार के हमले की रिपोर्ट धारा 3.5.2 में की गई थी) और अंत में रूट एक्सेस वाला एक टर्मिनल प्रदान करना। इसके लिए, निम्नलिखित आवश्यक था:

  1. एक निष्पादन योग्य ELF (एक्जीक्यूटेबल एंड लिंकिंग फॉर्मेट) कोड तैयार करें जिसका उपयोग पैरामीटर के रूप में प्राप्त SUID बाइनरी को ओवरराइट करने के लिए किया जाएगा। एक्सप्लॉइट में, उपयोग किया गया ELF निष्पादन योग्य एक नई निष्पादन योग्य फ़ाइल (/tmp/sh) बनाता है, जो बदले में रूट एक्सेस वाला एक शेल टर्मिनल बनाती है।
  2. पैरामीटर के रूप में एक SUID बाइनरी का पथ प्राप्त करें।
  3. प्राप्त बाइनरी का बैकअप लें।
  4. पाइप को PIPE_BUF_FLAG_CAN_MERGE फ़्लैग के साथ तैयार करें (जैसा कि ऊपर चरण 1, 2 और 3 में बताया गया है)।
  5. प्राप्त बाइनरी फ़ाइल को पाइप में स्थानांतरित करें और इस फ़ाइल की सामग्री को चरण 1 में चर्चित ELF निष्पादन योग्य से ओवरराइट करें (जैसा कि ऊपर चरण 4 और 5 में बताया गया है)।
  6. फिर, प्राप्त बाइनरी को बैकअप से उसकी मूल सामग्री पर पुनर्स्थापित किया जाता है, इस प्रकार कोई निशान नहीं छोड़ता।
  7. अंत में, चरण 1 में उल्लिखित निष्पादन योग्य फ़ाइल /tmp/sh चलाई जाती है, जिससे रूट एक्सेस वाला एक नया शेल खुलता है।

एक्सप्लॉइट 3 - रिमोट एक्सेस के लिए कुंजी जोड़ना

चलाना

root@kitploit:~
./exploit-3

विवरण

एक्सप्लॉइट 3, रिपॉजिटरी में फ़ाइल exploit-3.c में मौजूद, शेल रूट एक्सेस प्राप्त करने के लिए एक्सप्लॉइट 1 के समान चरणों का उपयोग करता है। अंतर यह है कि एक्सप्लॉइट 3, शेल रूट एक्सेस प्राप्त करने के बाद, हमलावर की एक सार्वजनिक SSH (सिक्योर शेल) कुंजी को /root/.ssh/authorized_keys फ़ाइल में लोड करता है और Ngrok प्लेटफ़ॉर्म का उपयोग करके SSH के लिए रिमोट एक्सेस हेतु एक TCP (ट्रांसमिशन कंट्रोल प्रोटोकॉल) टनल बनाता है।

संदर्भ

[1] AHMED, Alexis. Privilege Escalation Techniques: Learn the art of exploiting Windows and Linux systems. Birmingham: Packt Publishing, अक्टूबर 2021.

[2] KELLERMANN, Max. The Dirty Pipe Vulnerability. उपलब्ध: https://dirtypipe.cm4all.com/. अभिगम: 23 जुलाई 2022.

[3] Exploit Database. उपलब्ध: https://www.exploit-db.com/. अभिगम: 3 अगस्त 2022.

[4] Traitor: Automatically exploit low-hanging fruit to pop a root shell. उपलब्ध: https://github.com/liamg/traitor. अभिगम: 3 अगस्त 2022.

[5] PayloadsAllTheThings. Linux - Privilege Escalation. उपलब्ध: https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Linux%20-%20Privilege%20Escalation.md#cve-2022-0847-dirtypipe. अभिगम: 3 अगस्त 2022.

[6] लिनक्स कर्नेल रिपॉजिटरी - Struct pipe_inode_info. उपलब्ध: https://github.com/torvalds/linux/blob/v5.8/include/linux/pipe_fs_i.h#L76. अभिगम: 3 अगस्त 2022.

[7] लिनक्स कर्नेल रिपॉजिटरी - Struct pipe_buffer. उपलब्ध: https://github.com/torvalds/linux/blob/v5.8/include/linux/pipe_fs_i.h#L26-L32. अभिगम: 3 अगस्त 2022.

[8] ARNTZ, Pieter. Linux "Dirty Pipe" vulnerability gives unprivileged users root access. Malwarebytes Lab. उपलब्ध: https://www.malwarebytes.com/blog/news/2022/03/linux-dirty-pipe-vulnerability-gives-unprivileged-users-root-access. अभिगम: 3 अगस्त 2022.

[9] Picus Security. Linux “Dirty Pipe” CVE-2022-0847 Vulnerability Exploitation Explained. उपलब्ध: https://www.picussecurity.com/resource/linux-dirty-pipe-cve-2022-0847-vulnerability-exploitation-explained. अभिगम: 3 अगस्त 2022.

[10] Exploit Database - Local Privilege Escalation (Dirty Pipe). उपलब्ध: https://www.exploit-db.com/exploits/50808. अभिगम: 3 अगस्त 2022.

टूल डाउनलोड करें