ld.so privesc exploit example
वातावरण तैयार करें
अगले अनुभाग में आप उन फ़ाइलों का कोड पा सकते हैं जिनका हम वातावरण तैयार करने के लिए उपयोग करने जा रहे हैं
अपने मशीन में उसी फ़ोल्डर में उन फ़ाइलों को बनाएँ
लाइब्रेरी को संकलित करें:
gcc -shared -o libcustom.so -fPIC libcustom.c
libcustom.so
को/usr/lib
में कॉपी करें:sudo cp libcustom.so /usr/lib
(रूट प्रिविलेज)कार्यकारी फ़ाइल को संकलित करें:
gcc sharedvuln.c -o sharedvuln -lcustom
वातावरण की जाँच करें
जाँच करें कि libcustom.so /usr/lib से लोड हो रहा है और कि आप बाइनरी को निष्पादित कर सकते हैं।
Exploit
इस परिदृश्य में हम यह मानने जा रहे हैं कि किसी ने /etc/ld.so.conf/ के अंदर एक कमजोर प्रविष्टि बनाई है:
The vulnerable folder is /home/ubuntu/lib (जहाँ हमारे पास लिखने की अनुमति है)। डाउनलोड और संकलित करें निम्नलिखित कोड उस पथ के अंदर:
अब जब हमने गलत कॉन्फ़िगर की गई पथ के अंदर दुष्ट libcustom पुस्तकालय बनाया है, हमें रीबूट का इंतज़ार करना होगा या रूट उपयोगकर्ता को ldconfig
निष्पादित करने के लिए कहना होगा (यदि आप इस बाइनरी को sudo के रूप में निष्पादित कर सकते हैं या इसमें suid बिट है, तो आप इसे स्वयं निष्पादित कर सकेंगे)।
एक बार जब यह हो जाता है, तो फिर से जांचें कि sharevuln
निष्पादन योग्य libcustom.so
पुस्तकालय को कहाँ से लोड कर रहा है:
जैसा कि आप देख सकते हैं, यह /home/ubuntu/lib
से लोड हो रहा है और यदि कोई उपयोगकर्ता इसे निष्पादित करता है, तो एक शेल निष्पादित होगा:
ध्यान दें कि इस उदाहरण में हमने विशेषाधिकारों को बढ़ाया नहीं है, लेकिन निष्पादित किए गए आदेशों को संशोधित करके और जड़ या अन्य विशेषाधिकार प्राप्त उपयोगकर्ता के द्वारा कमजोर बाइनरी को निष्पादित करने की प्रतीक्षा करके हम विशेषाधिकार बढ़ा सकेंगे।
अन्य गलत कॉन्फ़िगरेशन - समान कमजोरियां
पिछले उदाहरण में हमने एक गलत कॉन्फ़िगरेशन का नाटक किया जहां एक व्यवस्थापक ने /etc/ld.so.conf.d/
के अंदर एक कॉन्फ़िगरेशन फ़ाइल के अंदर एक गैर-विशेषाधिकार प्राप्त फ़ोल्डर सेट किया।
लेकिन अन्य गलत कॉन्फ़िगरेशन भी हैं जो समान कमजोरियों का कारण बन सकते हैं, यदि आपके पास **/etc/ld.so.conf.d
के अंदर कुछ config file में लिखने की अनुमति है, /etc/ld.so.conf.d
फ़ोल्डर में या /etc/ld.so.conf
फ़ाइल में, तो आप समान कमजोरी को कॉन्फ़िगर कर सकते हैं और इसका लाभ उठा सकते हैं।
एक्सप्लॉइट 2
मान लीजिए कि आपके पास ldconfig
पर sudo विशेषाधिकार हैं।
आप ldconfig
को कॉन्फ़ फ़ाइलों को कहाँ से लोड करना है यह बता सकते हैं, इसलिए हम इसका लाभ उठाकर ldconfig
को मनमाने फ़ोल्डर लोड करने के लिए कह सकते हैं।
तो, चलिए "/tmp" को लोड करने के लिए आवश्यक फ़ाइलें और फ़ोल्डर बनाते हैं:
अब, जैसा कि पिछले एक्सप्लॉइट में संकेत दिया गया है, /tmp
के अंदर दुर्भावनापूर्ण लाइब्रेरी बनाएं।
और अंत में, चलिए पथ लोड करते हैं और जांचते हैं कि बाइनरी लाइब्रेरी को कहाँ से लोड कर रही है:
जैसा कि आप देख सकते हैं, ldconfig
पर sudo विशेषाधिकार होने से आप उसी कमजोरियों का लाभ उठा सकते हैं।
Last updated