
लिनक्स में Sudo chroot के माध्यम से रूट तक स्थानीय विशेषाधिकार वृद्धि
लिनक्स में sudo chroot के माध्यम से रूट तक स्थानीय विशेषाधिकार वृद्धि।
खबर के लिए यहाँ पढ़ें:
TL;DR और CMIIW तो, sudo वह कमांड है जो किसी कमांड को एडमिन/रूट के रूप में चलाने के लिए उपयोग होता है। उपयोगकर्ता sudo तभी चला सकता है जब वह sudoers समूह में हो। लेकिन sudo बाइनरी में एक बग है जो सामान्य उपयोगकर्ता को बिना अनुमति के sudo चलाने और रूट के रूप में स्विच करने देता है।
बग sudo कमांड के --chroot विकल्प में एक छेद है। यह chroot एक अस्थायी निर्देशिका में कमांड चलाने की अनुमति देता है। समस्या यह है कि sudo यह जाँचने से पहले कि क्या उपयोगकर्ता sudo चला सकता है, अस्थायी निर्देशिका के अंदर कॉन्फ़िग फ़ाइल की जाँच करता है।
यदि इस कॉन्फ़िग फ़ाइल को हम किसी तरह से संपादित कर सकते हैं और इसे एक संशोधित कोड की ओर इंगित कर सकते हैं जो रूट एक्सेस प्राप्त करने के लिए बनाया गया है, तो हम बिना प्रमाणीकरण या sudoer के रूप में पंजीकृत हुए रूट एक्सेस प्राप्त कर सकते हैं। क्योंकि प्रक्रिया में, उस जानकारी को प्राप्त करने के लिए, सिस्टम कमांड को रूट के रूप में (अस्थायी रूप से) बढ़ा देता है।
वह कॉन्फ़िग फ़ाइल क्या है? /etc/nsswitch.conf। यह कॉन्फ़िग फ़ाइल सिस्टम द्वारा यह जानने के लिए उपयोग की जाती है, उदाहरण के लिए, यह उपयोगकर्ता किस समूह में है, आदि। nsswitch के अंदर लगभग इस प्रकार है:
<database> <source1> <source2> ... <sourcen>
passwd files systemd
group files systemd
shadow files
gshadow files
...
हाँ! यदि उपयोग किया गया डेटा स्रोत files है, तो nss एक लाइब्रेरी को कॉल करेगा जिसका नाम libnss_files.so.2 है। इस फ़ाइल में C कोड है, जिसे यदि हम संपादित करते हैं तो हमारे लिए रूट एक्सेस प्राप्त करने की बहुत संभावना है। क्योंकि सिस्टम इसे रूट के रूप में चलाता है भले ही कमांड sudoer उपयोगकर्ता द्वारा नहीं चलाया गया हो। इसे exploit.sh फ़ाइल में देखा जा सकता है।
संक्षेप में:
/etc/nsswitch.conf उस फ़ोल्डर में जिसे हम नियंत्रित करते हैं।