2049 - Pentesting NFS Service

Support HackTricks

Basic Information

NFS एक ऐसा सिस्टम है जो क्लाइंट/सर्वर के लिए डिज़ाइन किया गया है, जो उपयोगकर्ताओं को नेटवर्क के माध्यम से फ़ाइलों तक सहजता से पहुँचने की अनुमति देता है जैसे कि ये फ़ाइलें स्थानीय निर्देशिका में स्थित हैं।

इस प्रोटोकॉल का एक महत्वपूर्ण पहलू इसकी अंतर्निहित प्रमाणीकरण या अधिकार प्रबंधन तंत्र की कमी है। इसके बजाय, अधिकार फ़ाइल सिस्टम जानकारी पर निर्भर करता है, जिसमें सर्वर को क्लाइंट-प्रदानित उपयोगकर्ता जानकारी को फ़ाइल सिस्टम के आवश्यक अधिकार प्रारूप में सटीक रूप से अनुवादित करने का कार्य सौंपा गया है, जो मुख्य रूप से UNIX सिंटैक्स का पालन करता है।

प्रमाणीकरण आमतौर पर UNIX UID/GID पहचानकर्ताओं और समूह सदस्यताओं पर निर्भर करता है। हालाँकि, एक चुनौती तब उत्पन्न होती है जब क्लाइंट और सर्वर के बीच UID/GID मैपिंग में संभावित असंगति होती है, जिससे सर्वर द्वारा अतिरिक्त सत्यापन के लिए कोई स्थान नहीं बचता। इसलिए, यह प्रोटोकॉल विश्वसनीय नेटवर्कों के भीतर उपयोग के लिए सबसे उपयुक्त है, क्योंकि यह इस प्रमाणीकरण विधि पर निर्भर करता है।

डिफ़ॉल्ट पोर्ट: 2049/TCP/UDP (संस्करण 4 को छोड़कर, इसे केवल TCP या UDP की आवश्यकता होती है)।

2049/tcp open  nfs     2-3 (RPC #100003

Versions

  • NFSv2: यह संस्करण विभिन्न प्रणालियों के साथ इसकी व्यापक संगतता के लिए पहचाना जाता है, जो इसके महत्व को UDP के माध्यम से प्रारंभिक संचालन के साथ चिह्नित करता है। श्रृंखला में सबसे पुराना होने के नाते, इसने भविष्य के विकास के लिए आधार तैयार किया।

  • NFSv3: कई सुधारों के साथ पेश किया गया, NFSv3 ने अपने पूर्ववर्ती पर विस्तार किया, जिसमें परिवर्तनशील फ़ाइल आकारों का समर्थन और बेहतर त्रुटि रिपोर्टिंग तंत्र प्रदान किया गया। इसके विकास के बावजूद, इसे NFSv2 क्लाइंट के साथ पूर्ण पूर्ववर्ती संगतता में सीमाओं का सामना करना पड़ा।

  • NFSv4: NFS श्रृंखला में एक महत्वपूर्ण संस्करण, NFSv4 ने नेटवर्क के बीच फ़ाइल साझा करने को आधुनिक बनाने के लिए डिज़ाइन की गई सुविधाओं का एक सेट पेश किया। उल्लेखनीय सुधारों में उच्च सुरक्षा के लिए Kerberos का एकीकरण, फ़ायरवॉल को पार करने और पोर्टमैपर्स की आवश्यकता के बिना इंटरनेट पर संचालन करने की क्षमता, एक्सेस कंट्रोल सूचियों (ACLs) का समर्थन, और स्थिति-आधारित संचालन का परिचय शामिल है। इसके प्रदर्शन में सुधार और स्थिति-आधारित प्रोटोकॉल को अपनाने ने NFSv4 को नेटवर्क फ़ाइल साझा करने की तकनीकों में एक महत्वपूर्ण प्रगति के रूप में अलग किया है।

NFS के प्रत्येक संस्करण को नेटवर्क वातावरण की विकसित आवश्यकताओं को संबोधित करने के इरादे से विकसित किया गया है, सुरक्षा, संगतता और प्रदर्शन को क्रमिक रूप से बढ़ाते हुए।

Enumeration

Useful nmap scripts

nfs-ls #List NFS exports and check permissions
nfs-showmount #Like showmount -e
nfs-statfs #Disk statistics and info from NFS share

उपयोगी मेटास्प्लॉइट मॉड्यूल

scanner/nfs/nfsmount #Scan NFS mounts and list permissions

Mounting

यह जानने के लिए कि कौन सा फ़ोल्डर सर्वर पर उपलब्ध है, आप इसे पूछ सकते हैं:

showmount -e <IP>

फिर इसे माउंट करें:

mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock

आपको संस्करण 2 का उपयोग करने के लिए निर्धारित करना चाहिए क्योंकि इसमें कोई प्रमाणीकरण या अधिकार नहीं है।

उदाहरण:

mkdir /mnt/new_back
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock

Permissions

यदि आप एक फ़ोल्डर को माउंट करते हैं जिसमें फाइलें या फ़ोल्डर केवल कुछ उपयोगकर्ता द्वारा एक्सेस किए जा सकते हैं (द्वारा UID)। आप स्थानीय रूप से उस UID के साथ एक उपयोगकर्ता बना सकते हैं और उस उपयोगकर्ता का उपयोग करके आप फ़ाइल/फ़ोल्डर को एक्सेस कर सकेंगे।

NSFShell

फाइलों तक पहुँच प्राप्त करने के लिए UID और GID को आसानी से सूचीबद्ध, माउंट और बदलने के लिए आप nfsshell का उपयोग कर सकते हैं।

अच्छा NFSShell ट्यूटोरियल।

Config files

/etc/exports
/etc/lib/nfs/etab

Dangerous settings

  • Read and Write Permissions (rw): यह सेटिंग फ़ाइल सिस्टम से पढ़ने और लिखने की अनुमति देती है। इतनी व्यापक पहुँच देने के परिणामों पर विचार करना आवश्यक है।

  • Use of Insecure Ports (insecure): जब सक्षम किया जाता है, तो यह सिस्टम को 1024 से ऊपर के पोर्ट का उपयोग करने की अनुमति देता है। इस रेंज के ऊपर के पोर्ट की सुरक्षा कम सख्त हो सकती है, जिससे जोखिम बढ़ता है।

  • Visibility of Nested File Systems (nohide): यह कॉन्फ़िगरेशन निर्देशिकाओं को दृश्यमान बनाता है, भले ही एक अन्य फ़ाइल सिस्टम एक निर्यातित निर्देशिका के नीचे माउंट किया गया हो। प्रत्येक निर्देशिका के लिए उचित प्रबंधन के लिए अपनी निर्यात प्रविष्टि की आवश्यकता होती है।

  • Root Files Ownership (no_root_squash): इस सेटिंग के साथ, रूट उपयोगकर्ता द्वारा बनाए गए फ़ाइलें अपनी मूल UID/GID 0 बनाए रखती हैं, न्यूनतम विशेषाधिकार के सिद्धांत की अनदेखी करते हुए और संभावित रूप से अत्यधिक अनुमतियाँ प्रदान करती हैं।

  • Non-Squashing of All Users (no_all_squash): यह विकल्प सुनिश्चित करता है कि उपयोगकर्ता पहचान प्रणाली में संरक्षित रहती है, जो यदि सही तरीके से प्रबंधित नहीं की गई तो अनुमति और पहुँच नियंत्रण समस्याओं का कारण बन सकती है।

Privilege Escalation using NFS misconfigurations

NFS no_root_squash and no_all_squash privilege escalation

HackTricks Automatic Commands

Protocol_Name: NFS    #Protocol Abbreviation if there is one.
Port_Number:  2049     #Comma separated if there is more than one.
Protocol_Description: Network File System         #Protocol Abbreviation Spelled out

Entry_1:
Name: Notes
Description: Notes for NFS
Note: |
NFS is a system designed for client/server that enables users to seamlessly access files over a network as though these files were located within a local directory.

#apt install nfs-common
showmount 10.10.10.180      ~or~showmount -e 10.10.10.180
should show you available shares (example /home)

mount -t nfs -o ver=2 10.10.10.180:/home /mnt/
cd /mnt
nano into /etc/passwd and change the uid (probably 1000 or 1001) to match the owner of the files if you are not able to get in

https://book.hacktricks.xyz/pentesting/nfs-service-pentesting

Entry_2:
Name: Nmap
Description: Nmap with NFS Scripts
Command: nmap --script=nfs-ls.nse,nfs-showmount.nse,nfs-statfs.nse -p 2049 {IP}
HackTricks का समर्थन करें

Last updated