hacktricks/network-services-pentesting/nfs-service-pentesting.md

12 KiB
Raw Blame History

2049 - Pentesting NFS Service

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Basic Information

NFS είναι ένα σύστημα σχεδιασμένο για client/server που επιτρέπει στους χρήστες να έχουν πρόσβαση σε αρχεία μέσω ενός δικτύου, σαν να βρίσκονται αυτά τα αρχεία σε τοπικό κατάλογο.

Ένα αξιοσημείωτο χαρακτηριστικό αυτού του πρωτοκόλλου είναι η έλλειψη ενσωματωμένων μηχανισμών αυθεντικοποίησης ή εξουσιοδότησης. Αντίθετα, η εξουσιοδότηση βασίζεται σε πληροφορίες συστήματος αρχείων, με τον διακομιστή να έχει την ευθύνη να μεταφράσει με ακρίβεια τις παρεχόμενες από τον πελάτη πληροφορίες χρήστη στη απαιτούμενη μορφή εξουσιοδότησης του συστήματος αρχείων, ακολουθώντας κυρίως τη σύνταξη UNIX.

Η αυθεντικοποίηση συνήθως βασίζεται σε αναγνωριστικά UID/GID και μέλη ομάδων του UNIX. Ωστόσο, προκύπτει μια πρόκληση λόγω της πιθανής ασυμφωνίας στις χαρτογραφήσεις 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 για υψηλή ασφάλεια, τη δυνατότητα διέλευσης τειχών προστασίας και λειτουργίας μέσω του Διαδικτύου χωρίς την ανάγκη για portmappers, υποστήριξη για Λίστες Ελέγχου Πρόσβασης (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

Χρήσιμα modules του metasploit

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 επειδή δεν έχει καμία αυθεντικοποίηση ή εξουσιοδότηση.

Example:

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.

Nice NFSShell tutorial.

Config files

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

Επικίνδυνες ρυθμίσεις

  • Δικαιώματα Ανάγνωσης και Εγγραφής (rw): Αυτή η ρύθμιση επιτρέπει τόσο την ανάγνωση όσο και την εγγραφή στο σύστημα αρχείων. Είναι σημαντικό να εξετάσετε τις επιπτώσεις της παροχής τέτοιας ευρείας πρόσβασης.

  • Χρήση Ανασφαλών Θυρών (insecure): Όταν είναι ενεργοποιημένο, αυτό επιτρέπει στο σύστημα να χρησιμοποιεί θύρες πάνω από το 1024. Η ασφάλεια των θυρών πάνω από αυτό το εύρος μπορεί να είναι λιγότερο αυστηρή, αυξάνοντας τον κίνδυνο.

  • Ορατότητα Ενσωματωμένων Συστήματων Αρχείων (nohide): Αυτή η ρύθμιση καθιστά τους καταλόγους ορατούς ακόμη και αν ένα άλλο σύστημα αρχείων είναι τοποθετημένο κάτω από έναν εξαγόμενο κατάλογο. Κάθε κατάλογος απαιτεί τη δική του καταχώρηση εξαγωγής για σωστή διαχείριση.

  • Κυριότητα Αρχείων Ρίζας (no_root_squash): Με αυτή τη ρύθμιση, τα αρχεία που δημιουργούνται από τον χρήστη ρίζας διατηρούν το αρχικό τους UID/GID 0, αγνοώντας την αρχή της ελάχιστης προνομίας και ενδεχομένως παρέχοντας υπερβολικά δικαιώματα.

  • Μη Σκουπίσματος Όλων των Χρηστών (no_all_squash): Αυτή η επιλογή διασφαλίζει ότι οι ταυτότητες χρηστών διατηρούνται σε όλο το σύστημα, γεγονός που θα μπορούσε να οδηγήσει σε ζητήματα δικαιωμάτων και ελέγχου πρόσβασης αν δεν διαχειριστεί σωστά.

Κλιμάκωση Προνομίων χρησιμοποιώντας κακές ρυθμίσεις NFS

NFS no_root_squash και no_all_squash κλιμάκωση προνομίων

HackTricks Αυτόματες Εντολές

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}

{% hint style="success" %} Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Υποστήριξη HackTricks
{% endhint %}