
🔄 need-restart के माध्यम से Linux PrivEsc (CVE-2024-48990)। root अधिग्रहण का स्वचालन। 💀
यह स्क्रिप्ट लिनक्स की needrestart उपयोगिता में CVE-2024-48990 भेद्यता का शोषण लाइब्रेरी पथ के अपहरण (PYTHONPATH hijacking) के माध्यम से करती है। मूल वेक्टर के विपरीत, यह विधि विशेष रूप से Python का उपयोग करती है, जिससे पीड़ित मशीन पर gcc जैसे कंपाइलर होने की आवश्यकता को समाप्त कर दिया जाता है।
/tmp/malicious/importlib निर्देशिका बनाई जाती है। यह Python की मानक लाइब्रेरी की संरचना की नकल करता है।importlib/__init__.py):
इसमें वह कोड होता है जो उन्नत विशेषाधिकारों के साथ निष्पादित होगा। लोड होने पर, यह जाँचता है कि वर्तमान उपयोगकर्ता root (UID 0) है या नहीं। यदि हाँ, तो यह /bin/bash बाइनरी को /tmp/poc में कॉपी करता है और उसे SUID बिट (chmod 4755) प्रदान करता है। यह एक बैकडोर बनाता है जो किसी भी उपयोगकर्ता को विशेषाधिकार बढ़ाने की अनुमति देता है।e.py):
यह एक हानिरहित स्क्रिप्ट है जो एक अनंत लूप में चलती रहती है। इसके दो कार्य हैं:needrestart उसे इंटरसेप्ट कर सके।/tmp निर्देशिका की लगातार निगरानी करना। जैसे ही यह पता लगाता है कि /tmp/poc फ़ाइल बन गई है, तो यह उसे -p फ्लैग के साथ स्वचालित रूप से निष्पादित करता है (ताकि root विशेषाधिकार न खोएं) और इंटरैक्टिव शेल प्रदान करता है।PYTHONPATH="$PWD" python3 e.py के साथ डिकॉय को निष्पादित करके, हम Python के व्यवहार को बदल देते हैं। हम किसी भी इम्पोर्ट को सिस्टम के वैध पथों से पहले /tmp/malicious में खोजने के लिए बाध्य करते हैं।needrestart):
जब needrestart व्यवस्थापक विशेषाधिकारों के साथ चलता है (मैन्युअल रूप से या सिस्टम के निर्धारित कार्य द्वारा), तो यह सक्रिय प्रक्रियाओं को स्कैन करता है। हमारे e.py तक पहुँचने पर, यह उसके पर्यावरण चरों को निकालता है और उसका विश्लेषण करने के लिए अपनी स्वयं की Python प्रक्रिया शुरू करता है। दुर्भावनापूर्ण PYTHONPATH इनहेरिट करने के कारण, needrestart की root प्रक्रिया हमारी नकली importlib लाइब्रेरी को इम्पोर्ट करती है और पेलोड को निष्पादित करती है, जिससे मशीन पर पूर्ण नियंत्रण मिल जाता है।