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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2021-3156 — CVE-2021-3156 (Baron Samedit) Report and Research | Kitploit
उपकरण/GitHubGitHub/ijbaig/cve-2021-3156
Privilege EscalationVulnerability AnalysisExploitationLearning & EducationBinary ExploitationLabs & Practice
GitHubijbaig/cve-2021-3156

CVE-2021-3156

CVE-2021-3156 (Baron Samedit) Report and Research

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

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

सभी देखें →

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

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

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

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

एक्सप्लॉइट चेन डीप-डाइव: CVE-2021-3156 (बैरन सैमेडिट)

लेखक: IJ Baig
तिथि: 7 जुलाई, 2026


1. CVE ID, प्रभावित संस्करण, और बिल्ड पुष्टि

  • CVE ID: CVE-2021-3156
  • भेद्यता प्रकार: हीप-आधारित बफर ओवरफ्लो
  • प्रभावित संस्करण सीमा: लीगेसी Sudo संस्करण 1.8.2 से 1.8.31p2, और स्थिर संस्करण 1.9.0 से 1.9.5p1।
  • लक्ष्य संस्करण (बिल्ड): Sudo 1.9.5p1

1.1 पर्यावरण सेटअप

इस भेद्यता का सुरक्षित रूप से विश्लेषण करने के लिए, भेद्य Sudo संस्करण को एक पृथक, गैर-उत्पादन वातावरण में संकलित (compile) किया गया।

OS Info

1.2 स्रोत से संकलन

Sudo 1.9.5p1 का स्रोत कोड डाउनलोड करके मानक make उपयोगिताओं का उपयोग करके स्थानीय रूप से संकलित किया गया। इसे स्थानीय निर्देशिका से चलाने का ध्यान रखा गया ताकि यह होस्ट सिस्टम के मूल, पैच किए गए sudo बाइनरी को अधिलेखित (overwrite) न करे।

Compilation Step 1

बिल्ड पुष्टि: संकलन के बाद, यह सत्यापित करने के लिए कि सही भेद्य संस्करण बना है, कस्टम बाइनरी को निष्पादित किया गया।

Make Install

Sudo Version

2. मूल कारण विश्लेषण

2.1 भेद्य कोड स्थान

  • फ़ाइल: plugins/sudoers/sudoers.c
  • फ़ंक्शन: set_cmnd() (संस्करण 1.9.5p1 में लगभग पंक्ति 864)

Vulnerable Code

2.2 भेद्यता की व्याख्या

कल्पना कीजिए कि आपके पास एक सहायक है जिसका काम शब्दों की सूची से एस्केप वर्णों (बैकस्लैश) को हटाना है, इससे पहले कि उन्हें नव-आवंटित भंडारण बॉक्स (हीप बफर) में रखा जाए। सहायक आँख बंद करके यह मान लेता है कि हर बैकस्लैश के बाद हमेशा एक मान्य वर्ण आता है, इसलिए जब भी उसे बैकस्लैश दिखता है, वह उसे छोड़ देता है और अगला वर्ण कॉपी कर लेता है।

हालाँकि, sudoedit -s चलाते समय प्रोग्राम द्वारा तर्कों (arguments) को संभालने के तरीके में एक त्रुटि मौजूद है। यह उपयोगकर्ता को एक ऐसा शब्द डालने की अनुमति देता है जो ठीक एक बैकस्लैश (\) के साथ समाप्त होता है, जिसके तुरंत बाद अदृश्य शब्द-अंत चिह्नक (एक नल टर्मिनेटर, \0) आता है।

जब सहायक का कोड इस अंतिम बैकस्लैश तक पहुँचता है, तो वह उसे छोड़ देता है और अगले वर्ण—नल टर्मिनेटर—को देखता है। रुकने के बजाय, if स्टेटमेंट का तर्क सहायक को नल टर्मिनेटर को भी छोड़ने के लिए बाध्य करता है। लूप चलता रहता है, और जो भी मनमानी, सीमा-से-बाहर (out-of-bounds) मेमोरी आगे आती है, उसे भंडारण बॉक्स में कॉपी करता रहता है। इच्छित शब्द लंबाई से परे यह निरंतर कॉपी करना निर्धारित बफर को ओवरफ्लो कर देता है, जिससे गंभीर हीप-आधारित बफर ओवरफ्लो उत्पन्न होता है।

भेद्य कोड स्निपेट:

root@kitploit:~
/* Unescape characters, skipping over backslashes */
for (to = user_args, av = NewArgv + 1; (from = *av); av++) {
    while (*from) {
        // VULNERABILITY: If from[0] is '\' and from[1] is '\0', 
        // the loop evaluates to true, increments 'from', skipping the null terminator.
        if (from[0] == '\\' && !isspace((unsigned char)from[1]))
            from++;
        *to++ = *from++; 
    }
    *to++ = ' ';
}
*--to = '\0';

2.3 आधिकारिक पैच और फिक्स की व्याख्या

Sudo डेवलपर्स ने संस्करण 1.9.5p2 में एक सख्त बाउंड्स जाँच जोड़कर इस तर्क त्रुटि को ठीक किया। कोड अब स्पष्ट रूप से सुनिश्चित करता है कि बैकस्लैश के बाद आने वाला वर्ण नल टर्मिनेटर नहीं है, इससे पहले कि उसे अनएस्केप करने का प्रयास किया जाए।

पैच डिफ:

root@kitploit:~
- if (from[0] == '\\' && !isspace((unsigned char)from[1]))
+ if (from[0] == '\\' && from[1] != '\0' && !isspace((unsigned char)from[1]))

यह मूल कारण को क्यों ठीक करता है: from[1] != '\0' को जोड़ने से सीमा-से-बाहर रीड (out-of-bounds read) तुरंत रुक जाती है। अब, यदि कोड को स्ट्रिंग के बिल्कुल अंत में एक अंतिम बैकस्लैश मिलता है (जिसका अर्थ है कि from[1] नल टर्मिनेटर है), तो if स्टेटमेंट गलत (false) मूल्यांकित होता है। पॉइंटर को समय से पहले नहीं बढ़ाया जाता, नल टर्मिनेटर को स्ट्रिंग के अंत के रूप में सही ढंग से संसाधित किया जाता है, और लूप हीप को ओवरफ्लो किए बिना सुरक्षित रूप से समाप्त हो जाता है।

3. एक्सप्लॉइट पुनरुत्पादन

3.1 सार्वजनिक प्रूफ ऑफ कॉन्सेप्ट (PoC)

इस पुनरुत्पादन के लिए, सुरक्षा शोधकर्ता Worawit द्वारा विकसित व्यापक रूप से मान्यता प्राप्त Python एक्सप्लॉइट (विशेष रूप से exploit_nss.py संस्करण) का उपयोग किया गया।

3.2 PoC निष्पादन का विवरण

PoC निष्पादित करने से पहले, इसकी कार्यप्रणाली को समझना महत्वपूर्ण है। स्क्रिप्ट केवल प्रोग्राम को क्रैश नहीं करती; यह कोड निष्पादन प्राप्त करने के लिए मेमोरी का अत्यधिक सटीक हेरफेर करती है।

PoC के संचालन का चरण-दर-चरण विवरण यहाँ दिया गया है:

  1. पेलोड निर्माण: स्क्रिप्ट एक दुर्भावनापूर्ण C पेलोड को शेयर्ड ऑब्जेक्ट फ़ाइल (.so) में गतिशील रूप से संकलित करती है। यह पेलोड /bin/sh को रूट के रूप में निष्पादित करने के लिए डिज़ाइन किया गया है।
  2. हीप फेंग शुई: स्क्रिप्ट विशिष्ट पर्यावरण चर (जैसे LC_ALL, LANG, और TZ) सेट करती है। चूँकि Sudo स्टार्टअप पर पर्यावरण चरों को हीप पर लोड करता है, स्क्रिप्ट हीप को एक अनुमानित लेआउट में व्यवस्थित करने के लिए आवश्यक सटीक आकारों की गणना करती है।
  3. ओवरफ्लो: स्क्रिप्ट sudoedit -s निष्पादित करती है और एक कमांड-लाइन तर्क पास करती है जो एकल बैकस्लैश में समाप्त होता है। यह अनुभाग 2 में चर्चित ऑफ-बाय-वन भेद्यता को ट्रिगर करता है, जिससे सीमा-से-बाहर राइट (out-of-bounds write) उत्पन्न होता है।
  4. NSS स्ट्रक्चर को लक्षित करना: सीमा-से-बाहर राइट आसन्न हीप मेमोरी में एक विशिष्ट glibc संरचना को सटीक रूप से अधिलेखित करती है: service_user स्ट्रक्चर। इस स्ट्रक्चर का उपयोग Name Service Switch (NSS) द्वारा सिस्टम जानकारी देखने के लिए किया जाता है।
  5. कोड निष्पादन: service_user स्ट्रक्चर को दूषित करके चरण 1 में संकलित दुर्भावनापूर्ण .so लाइब्रेरी की ओर इंगित किया जाता है। जब Sudo उपयोगकर्ता विशेषाधिकारों को देखने का प्रयास करता है, तो वह आँख बंद करके हमलावर की लाइब्रेरी को लोड और निष्पादित कर लेता है, जिससे रूट शेल प्राप्त हो जाता है।

3.3 भेद्यता को ट्रिगर करना (Sudo 1.9.5p1)

सबसे पहले, यह सिद्ध करने के लिए कि भेद्यता मौजूद है, बिना इसे हथियार बनाए एक बुनियादी क्रैश परीक्षण किया गया।

Vuln Check

इसके बाद, भेद्य बाइनरी के विरुद्ध पूर्ण Worawit exploit_nss.py स्क्रिप्ट निष्पादित की गई।

Terminal Access as Root

3.4 पैच का सत्यापन (Sudo 1.9.5p2)

आधिकारिक फिक्स को सत्यापित करने के लिए, ठीक वही PoC ट्रिगर पैच किए गए Sudo बाइनरी के विरुद्ध निष्पादित किया गया।

root@kitploit:~
sudoedit -s '\' 2>&1 | grep -q "sudoedit:" && echo "Vulnerable" || echo "Not vulnerable"

Patch Verify

4. गैर-तकनीकी सारांश

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

5. सामना की गई चुनौतियाँ और सीखे गए सबक

चुनौतियाँ: प्राथमिक चुनौतियों में से एक हीप हेरफेर की नाजुकता थी। विशिष्ट OS संस्करणों को लक्षित करने वाले एक्सप्लॉइट पेलोड अक्सर अन्य पर विफल हो जाते हैं क्योंकि अंतर्निहित मानक C लाइब्रेरी (glibc) मेमोरी चंक्स को अलग तरीके से प्रबंधित करती है। इस भेद्यता को सफलतापूर्वक हथियार बनाने के लिए लक्ष्य वातावरण के लिए विशिष्ट मेमोरी संरेखण और पर्यावरण चर लेआउट (हीप फेंग शुई) की सटीक समझ आवश्यक थी।

सीखे गए सबक: रक्षात्मक और सुरक्षा संचालन के दृष्टिकोण से, इस डीप-डाइव ने कई महत्वपूर्ण अवधारणाओं को और मजबूत किया:

  • नियंत्रित प्रयोगशाला वातावरण का मूल्य: निर्देशित, वेब-आधारित रेंज (जैसे TryHackMe) से आगे बढ़कर स्थानीय रूप से स्रोत से एक भेद्य बाइनरी का निर्माण और उसका शोषण करना, यह गहरी समझ प्रदान करता है कि अंतर्निहित OS तंत्र एक्सप्लॉइट की व्यवहार्यता को कैसे निर्धारित करते हैं।
  • डिटेक्शन इंजीनियरिंग सर्वोपरि है: केवल SUID बाइनरी को पैच करने पर निर्भर रहना पर्याप्त नहीं है क्योंकि पैच चक्र में समय लगता है। इस एक्सप्लॉइट की खोज ने मजबूत SIEM डिटेक्शन नियमों की आवश्यकता को उजागर किया। एस्केप वर्णों में समाप्त होने वाले संदिग्ध sudoedit -s कमांड के लिए प्रोसेस निष्पादन टेलीमेट्री की निगरानी करने से SOC टीम को पूरे इंफ्रास्ट्रक्चर में पैच पूरी तरह से तैनात होने से पहले ही एक्सप्लॉइटेशन प्रयासों का पता लगाने में मदद मिल सकती है।
  • विशेषाधिकार सीमाएँ: इस अभ्यास ने SUID बाइनरी से जुड़े अत्यधिक जोखिम को रेखांकित किया। चूँकि Sudo अपने पहले ही निर्देश से रूट विशेषाधिकारों के साथ निष्पादित होता है, स्टार्टअप पर कोई भी पार्सिंग तर्क त्रुटि पूर्ण सिस्टम समझौते की गारंटी देती है।

6. बोनस: Sudo में समानांतर भेद्यताएँ

समानांतर CVE: CVE-2019-14287 (Sudo सुरक्षा बायपास) ठीक उसी Sudo कोडबेस में एक और प्रमुख भेद्यता समान मूल-कारण पैटर्न साझा करती है: उपयोगकर्ता इनपुट का अनुचित पार्सिंग और सत्यापन। CVE-2019-14287 में, Sudo द्वारा उपयोगकर्ता ID (UID) को पार्स करने के तरीके में एक तर्क दोष ने हमलावर को उपयोगकर्ता ID -1 या 4294967295 निर्दिष्ट करके रूट के रूप में कमांड निष्पादित करने की अनुमति दी।

समानता: जहाँ Baron Samedit (CVE-2021-3156) एक मेमोरी भ्रष्टाचार दोष है और CVE-2019-14287 एक प्राधिकरण बायपास है, दोनों मामलों में मूल कारण प्रारंभिक तर्क पार्सिंग तर्क में विफलता है। दोनों भेद्यताएँ Sudo द्वारा अपने मुख्य विशेषाधिकार प्राप्त कार्यों को निष्पादित करने से पहले एज-केस कमांड-लाइन तर्कों (अंतिम बैकस्लैश बनाम अप्रत्याशित पूर्णांक रैप) पर गलत तरीके से भरोसा करने और उन्हें गलत तरीके से संभालने से उत्पन्न होती हैं।


सुरक्षा एवं नैतिकता घोषणा: इस रिपोर्ट में प्रदर्शित सभी एक्सप्लॉइटेशन और परीक्षण पूरी तरह से एक पृथक, अधिकृत स्थानीय वर्चुअल मशीन के भीतर किए गए थे। इस अभ्यास के दौरान किसी भी उत्पादन प्रणाली या अनधिकृत नेटवर्क को लक्षित नहीं किया गया और न ही उनके साथ कोई अंतःक्रिया की गई।

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