
एक प्रूफ ऑफ कॉन्सेप्ट (PoC) शोषण CVE-2015-1328 के लिए
CVE-2015-1328 के लिए एक प्रूफ ऑफ कॉन्सेप्ट (PoC) एक्सप्लॉइट, जो लिनक्स कर्नेल के overlayfs कार्यान्वयन को प्रभावित करने वाली एक विशेषाधिकार वृद्धि भेद्यता है। यह भेद्यता स्थानीय अनप्रिविलेज्ड उपयोगकर्ताओं को उपयोगकर्ता नामस्थानों के भीतर overlayfs माउंट संचालन में अनुचित अनुमति जाँचों का शोषण करके रूट एक्सेस प्राप्त करने की अनुमति देती है।
CVE-2015-1328 एक गंभीर सुरक्षा भेद्यता है जो overlayfs समर्थन और उपयोगकर्ता नामस्थान सक्षम वाले लिनक्स कर्नेल को प्रभावित करती है। यह भेद्यता एक अनप्रिविलेज्ड स्थानीय उपयोगकर्ता को निम्नलिखित की अनुमति देती है:
unshare(CLONE_NEWUSER) का उपयोग करके एक उपयोगकर्ता नामस्थान बनाना/etc/ld.so.preload में लिखने के लिए अनुमति जाँच की खामियों का शोषण करनायह PoC निम्नलिखित तरीकों से भेद्यता प्रदर्शित करता है:
/etc/ld.so.preload के माध्यम से एक कस्टम साझा लाइब्रेरी इंजेक्ट करनाgetuid() को हाईजैक करनाkernel.unprivileged_userns_clone=1)-m32 फ्लैग समर्थन)परियोजना में आसान संकलन के लिए एक Makefile शामिल है:
make
यह निम्नलिखित संकलित करेगा:
ofs - मुख्य एक्सप्लॉइट बाइनरी (स्टैटिक 32-बिट)ofs-lib.so - LD_PRELOAD हुक के लिए साझा लाइब्रेरी (32-बिट)यदि आप मैन्युअल रूप से संकलित करना पसंद करते हैं:
# Compile main exploit
gcc -o ofs ofs.c -m32 -static
# Compile shared library
gcc -m32 -fPIC -shared -o ofs-lib.so ofs-lib.c -ldl -static-libgcc
⚠️ चेतावनी: यह एक्सप्लॉइट सिस्टम फाइलों को संशोधित करेगा और रूट विशेषाधिकार प्राप्त करने का प्रयास करेगा। केवल नियंत्रित वातावरण में उचित प्राधिकरण के साथ उपयोग करें।
एक्सप्लॉइट संकलित करें:
make
एक्सप्लॉइट चलाएँ:
./ofs
यदि सफल होता है, तो एक्सप्लॉइट निम्नलिखित करेगा:
/etc/ld.so.preload में लिखेगा/bin/su निष्पादित करेगा जो दुर्भावनापूर्ण लाइब्रेरी को ट्रिगर करता हैunshare(CLONE_NEWUSER) का उपयोग करके एक नया उपयोगकर्ता नामस्थान बनाता हैCLONE_NEWNS के साथ clone() का उपयोग करके एक माउंट नामस्थान बनाता है/etc/ld.so.preload में लिखने के लिए overlayfs का उपयोग करता है/tmp/ofs-lib.so पर एक दुर्भावनापूर्ण साझा लाइब्रेरी लिखता है/bin/su निष्पादित करता है, जो प्रीलोडेड लाइब्रेरी को ट्रिगर करता हैgetuid() को हाईजैक करती है और एक रूट शेल उत्पन्न करती हैclone() का उपयोग करता हैofs-lib.so) LD_PRELOAD के माध्यम से getuid() को हुक करती है/bin/su getuid() को कॉल करता है, तो इसके बजाय दुर्भावनापूर्ण फ़ंक्शन निष्पादित होता है.
├── ofs.c # मुख्य एक्सप्लॉइट कोड
├── ofs-lib.c # विशेषाधिकार वृद्धि के लिए साझा लाइब्रेरी
├── lib_so.h # एम्बेडेड बाइनरी लाइब्रेरी डेटा
├── Makefile # बिल्ड कॉन्फ़िगरेशन
└── README.md # यह फ़ाइल
getuid() हुक को लागू करता है जो एक रूट शेल उत्पन्न करता हैइस भेद्यता से बचाव के लिए:
echo 0 > /proc/sys/kernel/unprivileged_userns_clone
यह कोड केवल शैक्षिक और सुरक्षा अनुसंधान उद्देश्यों के लिए प्रदान किया गया है।
यह परियोजना शैक्षिक उद्देश्यों के लिए यथावत प्रदान की गई है। सभी लागू कानूनों और विनियमों के अनुसार जिम्मेदारी से उपयोग करें।