
Polkit Pkexec भेद्यता के लिए प्रमाण की अवधारणा: CVE-2021-4034 (Pkexec स्थानीय विशेषाधिकार वृद्धि)
इस रिपॉजिटरी में एक एक्सप्लॉइट है जिसे मैंने Polkit Pkexec भेद्यता: CVE-2021-4034 (Pkexec Local Privilege Escalation) को समझने के लिए विकसित किया है। Polkit (पूर्व में PolicyKit के नाम से जाना जाता था) एक घटक है जो Unix-प्रकार के ऑपरेटिंग सिस्टम में विशेषाधिकारों को नियंत्रित करने का कार्य करता है। यह एक संगठित तरीके से विशेषाधिकार रहित प्रक्रियाओं को विशेषाधिकार वाली प्रक्रियाओं के साथ संवाद करने का एक तरीका प्रदान करता है। यह भेद्यता किसी भी उपयोगकर्ता, सिस्टम के एक सामान्य उपयोगकर्ता को, बिना प्रशासनिक विशेषाधिकारों के, सिस्टम पर अधिकतम विशेषाधिकार प्राप्त करने की अनुमति देती है।
भेद्यता तब होती है जब pkexec का main() फ़ंक्शन कमांड-लाइन तर्कों को संसाधित करता है जहां तर्क 0 होता है। फ़ंक्शन तर्कों की सूची तक पहुँचने का प्रयास करता है और अंततः rgvvoid (एक कमांड-लाइन तर्क नियंत्रक) तक पहुँचने का प्रयास करता है, अर्थात, यह तब होता है जब pkexec कॉल पैरामीटर को ठीक से संभाल नहीं पाता है और पर्यावरण चर को कमांड के रूप में निष्पादित करने का प्रयास करता है। इसका परिणाम यह होता है कि मेमोरी को सीमा से बाहर पढ़ा और लिखा जाता है, जहाँ एक हमलावर शोषण कर सकता है और इस प्रकार एक पर्यावरण चर इंजेक्ट कर सकता है जो दुर्भावनापूर्ण कोड को लोड कर सकता है।
यह समझना सरल है, तथ्य यह है कि इन पर्यावरण चर को पेश किया जा सकता है, कोड को कमजोर बनाता है। मैंने भेद्यता का शोषण करने के लिए जिस तरीके का उपयोग किया वह वही है जो Qualys द्वारा उपयोग किया गया था। प्रक्रिया सरल है, बस pkexec के कार्य वातावरण में एक GCONV_PATH चर इंजेक्ट करें, अर्थात, सिस्टम के सामान्य उपयोगकर्ताओं के लिए उपलब्ध कोई भी निर्देशिका। यह चर रूट के रूप में एक साझा लाइब्रेरी निष्पादित करेगा। हमें यह स्पष्ट करना होगा कि यह तकनीक शोरगुल वाली है और बहुत सारे निशान छोड़ती है, क्योंकि चर इंजेक्शन एक निर्देशिका बनाता है और वह रूट उपयोगकर्ता के साथ विशेषाधिकार साझा करता है।
यदि आप देखते हैं कि आपका सिस्टम असुरक्षित है, तो जितनी जल्दी हो सके अपडेट करें। यदि फिर भी आपको लगता है कि यह असुरक्षित है, तो आप अस्थायी शमन के रूप में pkexec से SUID बिट को इस प्रकार हटा सकते हैं: # chmod 0755 /usr/bin/pkexec
भेद्यता कैसे काम करती है, इसके बारे में अधिक जानकारी यहाँ है।
यह एक्सप्लॉइट Debian, Ubuntu, Fedora और CentOS पर आधारित असुरक्षित वितरणों पर तुरंत काम करेगा। इसे भेद्यता के अध्ययन के उद्देश्य से और यह देखने के लिए बनाया गया है कि मैं वर्तमान में C भाषा के साथ अकेले कितनी दूर तक पहुँच सकता हूँ :D। इसका उपयोग वह करने के लिए न करें जो आपको नहीं करना चाहिए।
$ git clone https://github.com/Nosferatuvjr/PwnKit
$ cd PwnKit
$ chmod +x ./PwnKit.sh
$ ./PwnKit.sh
# id
या
$ git clone https://github.com/Nosferatuvjr/PwnKit
$ cd PwnKit
$ chmod +x ./PwnKit
$ ./PwnKit
$ ./PwnKit id #shell interativa

gcc -shared PwnKit.c -o PwnKit -Wl,-e,entry -fPIC