NFS no_root_squash/no_all_squash misconfiguration PE
_ /etc/exports _ फ़ाइल को पढ़ें, यदि आप कुछ निर्देशिका पाते हैं जो no_root_squash के रूप में कॉन्फ़िगर की गई है, तो आप एक क्लाइंट के रूप में इसे एक्सेस कर सकते हैं और उस निर्देशिका के अंदर लिख सकते हैं जैसे कि आप मशीन के स्थानीय रूट थे।
no_root_squash: यह विकल्प मूल रूप से क्लाइंट पर रूट उपयोगकर्ता को NFS सर्वर पर रूट के रूप में फ़ाइलों तक पहुँचने का अधिकार देता है। और इससे गंभीर सुरक्षा परिणाम हो सकते हैं।
no_all_squash: यह no_root_squash विकल्प के समान है लेकिन गैर-रूट उपयोगकर्ताओं पर लागू होता है। कल्पना करें, आपके पास कोई उपयोगकर्ता के रूप में एक शेल है; /etc/exports फ़ाइल की जांच की; no_all_squash विकल्प मौजूद है; /etc/passwd फ़ाइल की जांच करें; एक गैर-रूट उपयोगकर्ता का अनुकरण करें; उस उपयोगकर्ता के रूप में एक suid फ़ाइल बनाएं (nfs का उपयोग करके माउंट करके)। कोई उपयोगकर्ता के रूप में suid को निष्पादित करें और विभिन्न उपयोगकर्ता बनें।
Privilege Escalation
Remote Exploit
यदि आपने इस भेद्यता को पाया है, तो आप इसका शोषण कर सकते हैं:
क्लाइंट मशीन में उस निर्देशिका को माउंट करना, और रूट के रूप में माउंट किए गए फ़ोल्डर के अंदर /bin/bash बाइनरी की कॉपी करना और उसे SUID अधिकार देना, और शिकार मशीन से उस बाश बाइनरी को निष्पादित करना।
उस निर्देशिका को एक क्लाइंट मशीन में माउंट करना, और रूट के रूप में माउंट की गई फ़ोल्डर के अंदर हमारे कंपाइल किए गए पेलोड को कॉपी करना जो SUID अनुमति का दुरुपयोग करेगा, इसे SUID अधिकार देना, और शिकार मशीन से उस बाइनरी को निष्पादित करना (आप यहाँ कुछ C SUID पेलोड्स पा सकते हैं)।
Local Exploit
ध्यान दें कि यदि आप अपनी मशीन से पीड़ित मशीन तक एक टनल बना सकते हैं, तो आप इस विशेषाधिकार वृद्धि का शोषण करने के लिए दूरस्थ संस्करण का उपयोग कर सकते हैं, आवश्यक पोर्ट्स को टनल करते हुए।
यह ट्रिक तब है जब फ़ाइल /etc/exports
एक IP को इंगित करती है। इस मामले में आप किसी भी स्थिति में दूरस्थ शोषण का उपयोग नहीं कर पाएंगे और आपको इस ट्रिक का दुरुपयोग करना होगा।
शोषण के काम करने के लिए एक और आवश्यक आवश्यकता यह है कि /etc/export
के अंदर निर्यात insecure
ध्वज का उपयोग कर रहा हो।
--मुझे यकीन नहीं है कि यदि /etc/export
एक IP पते को इंगित कर रहा है तो यह ट्रिक काम करेगी--
Basic Information
परिदृश्य में एक स्थानीय मशीन पर एक माउंटेड NFS शेयर का शोषण करना शामिल है, NFSv3 विनिर्देशन में एक दोष का लाभ उठाते हुए जो क्लाइंट को अपने uid/gid को निर्दिष्ट करने की अनुमति देता है, संभावित रूप से अनधिकृत पहुंच सक्षम करता है। शोषण में libnfs का उपयोग शामिल है, जो NFS RPC कॉल के निर्माण की अनुमति देने वाली एक लाइब्रेरी है।
Compiling the Library
लाइब्रेरी संकलन चरणों में कर्नेल संस्करण के आधार पर समायोजन की आवश्यकता हो सकती है। इस विशेष मामले में, fallocate syscalls को टिप्पणी की गई थी। संकलन प्रक्रिया में निम्नलिखित कमांड शामिल हैं:
शोषण करना
शोषण में एक सरल C प्रोग्राम (pwn.c
) बनाना शामिल है जो रूट तक विशेषाधिकार बढ़ाता है और फिर एक शेल निष्पादित करता है। प्रोग्राम को संकलित किया जाता है, और परिणामी बाइनरी (a.out
) को suid रूट के साथ शेयर पर रखा जाता है, RPC कॉल में uid को फेक करने के लिए ld_nfs.so
का उपयोग किया जाता है:
शोषण कोड संकलित करें:
शोषण को शेयर पर रखें और uid को फेक करके इसकी अनुमतियों को संशोधित करें:
रूट विशेषाधिकार प्राप्त करने के लिए शोषण निष्पादित करें:
बोनस: NFShell के लिए छिपा हुआ फ़ाइल एक्सेस
एक बार रूट एक्सेस प्राप्त होने के बाद, स्वामित्व को बदले बिना NFS शेयर के साथ इंटरैक्ट करने के लिए (निशान छोड़ने से बचने के लिए), एक Python स्क्रिप्ट (nfsh.py) का उपयोग किया जाता है। यह स्क्रिप्ट uid को उस फ़ाइल के uid से मेल खाने के लिए समायोजित करती है जिसे एक्सेस किया जा रहा है, जिससे शेयर पर फ़ाइलों के साथ इंटरैक्शन की अनुमति मिलती है बिना अनुमति की समस्याओं के:
जैसे चलाएँ:
Last updated