ld.so privesc exploit example
पर्यावरण तैयार करें
निम्नलिखित खंड में आपको फाइलों का कोड मिलेगा जिनका उपयोग हम पर्यावरण तैयार करने के लिए करने वाले हैं
बनाएं अपनी मशीन में उन फाइलों को उसी फोल्डर में
कंपाइल करें लाइब्रेरी:
gcc -shared -o libcustom.so -fPIC libcustom.c
कॉपी करें
libcustom.so
को/usr/lib
में:sudo cp libcustom.so /usr/lib
(root privs)कंपाइल करें एक्जीक्यूटेबल:
gcc sharedvuln.c -o sharedvuln -lcustom
पर्यावरण की जांच करें
जांचें कि libcustom.so /usr/lib से लोड हो रहा है और आप बाइनरी को एक्जीक्यूट कर सकते हैं।
एक्सप्लॉइट
इस परिदृश्य में हम मान रहे हैं कि किसी ने /etc/ld.so.conf/ में एक फाइल के अंदर एक संवेदनशील प्रविष्टि बनाई है:
वल्नरेबल फोल्डर /home/ubuntu/lib है (जहाँ हमें लिखने की अनुमति है)। डाउनलोड और कंपाइल करें निम्नलिखित कोड उस पथ के अंदर:
अब जबकि हमने गलत कॉन्फ़िगर किए गए पथ के अंदर दुर्भावनापूर्ण libcustom लाइब्रेरी बना ली है, हमें एक रिबूट का इंतजार करना होगा या फिर रूट यूजर को ldconfig
निष्पादित करते हुए देखना होगा (यदि आप इस बाइनरी को sudo के रूप में निष्पादित कर सकते हैं या इसमें suid बिट है तो आप इसे स्वयं निष्पादित कर पाएंगे).
एक बार जब यह हो जाए, तो पुनः जांचें कि sharevuln
निष्पादनयोग्य फ़ाइल libcustom.so
लाइब्रेरी को कहाँ से लोड कर रहा है:
जैसा कि आप देख सकते हैं यह /home/ubuntu/lib
से लोड हो रहा है और अगर कोई उपयोगकर्ता इसे निष्पादित करता है, तो एक शेल निष्पादित किया जाएगा:
ध्यान दें कि इस उदाहरण में हमने विशेषाधिकार नहीं बढ़ाए हैं, लेकिन आदेशों को संशोधित करके और रूट या अन्य विशेषाधिकार प्राप्त उपयोगकर्ता द्वारा संवेदनशील बाइनरी को निष्पादित करने की प्रतीक्षा करके हम विशेषाधिकार बढ़ा सकते हैं।
अन्य गलत कॉन्फ़िगरेशन - समान दोष
पिछले उदाहरण में हमने एक गलत कॉन्फ़िगरेशन का नकली बनाया जहां एक प्रशासक ने /etc/ld.so.conf.d/
के अंदर एक कॉन्फ़िगरेशन फ़ाइल के अंदर एक गैर-विशेषाधिकार प्राप्त फ़ोल्डर सेट किया।
लेकिन अन्य गलत कॉन्फ़िगरेशन भी हो सकते हैं जो समान दोष का कारण बन सकते हैं, अगर आपके पास /etc/ld.so.conf.d
के अंदर किसी कॉन्फ़िगरेशन फ़ाइल में, /etc/ld.so.conf.d
फ़ोल्डर में या /etc/ld.so.conf
फ़ाइल में लिखने की अनुमति है तो आप समान दोष को कॉन्फ़िगर कर सकते हैं और इसका शोषण कर सकते हैं।
Exploit 2
मान लीजिए आपके पास ldconfig
पर सुडो विशेषाधिकार हैं।
आप ldconfig
को यह बता सकते हैं कि कॉन्फ़िगरेशन फ़ाइलें कहां से लोड करें, इसलिए हम इसका फायदा उठा सकते हैं ताकि ldconfig
मनमाने फ़ोल्डर्स को लोड करे।
तो, चलिए "/tmp" को लोड करने के लिए आवश्यक फ़ाइलें और फ़ोल्डर्स बनाते हैं:
अब, पिछले एक्सप्लॉइट में बताए गए अनुसार, /tmp
के अंदर दुर्भावनापूर्ण लाइब्रेरी बनाएं।
और अंत में, पथ को लोड करें और जांचें कि बाइनरी लाइब्रेरी को कहां से लोड कर रही है:
जैसा कि आप देख सकते हैं, ldconfig
पर sudo विशेषाधिकार होने से आप उसी कमजोरी का शोषण कर सकते हैं।
मुझे ldconfig
को suid bit के साथ कॉन्फ़िगर किए जाने पर इस कमजोरी का शोषण करने का कोई विश्वसनीय तरीका नहीं मिला। निम्नलिखित त्रुटि दिखाई देती है: /sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~: Permission denied
संदर्भ
HTB में Dab machine
Last updated