2049 - Pentesting NFS Service

Lernen Sie das Hacken von AWS von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Grundlegende Informationen

NFS ist ein System, das für Client/Server entwickelt wurde und es Benutzern ermöglicht, nahtlos auf Dateien in einem Netzwerk zuzugreifen, als ob sich diese Dateien in einem lokalen Verzeichnis befinden würden.

Ein bemerkenswerter Aspekt dieses Protokolls ist das Fehlen von integrierten Authentifizierungs- oder Autorisierungsmechanismen. Stattdessen beruht die Autorisierung auf Dateisysteminformationen, wobei der Server damit beauftragt ist, die vom Client bereitgestellten Benutzerinformationen in das vom Dateisystem erforderliche Autorisierungsformat zu übersetzen, das hauptsächlich der UNIX-Syntax folgt.

Die Authentifizierung erfolgt in der Regel über UNIX-UID/GID-Kennungen und Gruppenmitgliedschaften. Es besteht jedoch eine Herausforderung aufgrund der möglichen Unstimmigkeit in den UID/GID-Zuordnungen zwischen Clients und Servern, wodurch dem Server keine zusätzliche Überprüfung ermöglicht wird. Folglich eignet sich das Protokoll am besten für die Verwendung in vertrauenswürdigen Netzwerken, da es auf dieser Authentifizierungsmethode beruht.

Standardport: 2049/TCP/UDP (außer Version 4, hier wird nur TCP oder UDP benötigt).

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

Versionen

  • NFSv2: Diese Version ist bekannt für ihre breite Kompatibilität mit verschiedenen Systemen und markiert ihre Bedeutung durch anfängliche Operationen überwiegend über UDP. Als älteste in der Serie legte sie den Grundstein für zukünftige Entwicklungen.

  • NFSv3: Mit einer Reihe von Verbesserungen eingeführt, erweiterte NFSv3 seinen Vorgänger durch Unterstützung variabler Dateigrößen und verbesserte Fehlerberichterstattungsmechanismen. Trotz seiner Fortschritte stieß es an Grenzen bei der vollständigen Abwärtskompatibilität mit NFSv2-Clients.

  • NFSv4: Eine wegweisende Version in der NFS-Serie, brachte NFSv4 eine Reihe von Funktionen mit sich, die darauf abzielten, den Dateiaustausch über Netzwerke zu modernisieren. Bemerkenswerte Verbesserungen sind die Integration von Kerberos für hohe Sicherheit, die Fähigkeit, Firewalls zu durchqueren und über das Internet zu arbeiten, ohne Portmapper zu benötigen, Unterstützung für Access Control Lists (ACLs) und die Einführung von zustandsbasierten Operationen. Die Leistungsverbesserungen und die Übernahme eines zustandsbehafteten Protokolls zeichnen NFSv4 als entscheidenden Fortschritt in den Technologien für den Netzwerkdateiaustausch aus.

Jede Version von NFS wurde entwickelt, um den sich wandelnden Anforderungen von Netzwerkumgebungen gerecht zu werden und Sicherheit, Kompatibilität und Leistung schrittweise zu verbessern.

Enumeration

Nützliche nmap-Skripte

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

Nützliche Metasploit-Module

Metasploit bietet eine Vielzahl von Modulen, die beim Pentesting von Netzwerkdiensten hilfreich sein können. Hier sind einige nützliche Module:

  • auxiliary/scanner/nfs/nfsmount: Dieses Modul ermöglicht das Scannen eines Netzwerks nach NFS-Freigaben und das Mounten dieser Freigaben auf dem angreifenden System.

  • auxiliary/scanner/nfs/nfsenum: Mit diesem Modul können NFS-Freigaben auf einem Zielserver enumeriert werden, um Informationen wie Dateisysteme, Berechtigungen und exportierte Verzeichnisse zu erhalten.

  • auxiliary/scanner/nfs/nfs_showmount: Dieses Modul zeigt die exportierten NFS-Freigaben auf einem Zielserver an.

  • exploit/linux/nfs/nfsd: Dieses Modul ermöglicht das Ausnutzen einer Schwachstelle im NFS-Dienst auf Linux-Systemen, um eine Remote-Code-Ausführung zu erzielen.

  • exploit/solaris/nfs/nfsd: Mit diesem Modul kann eine Schwachstelle im NFS-Dienst auf Solaris-Systemen ausgenutzt werden, um eine Remote-Code-Ausführung zu erreichen.

  • exploit/windows/nfs/nfsd: Dieses Modul ermöglicht das Ausnutzen einer Schwachstelle im NFS-Dienst auf Windows-Systemen, um eine Remote-Code-Ausführung zu erzielen.

Diese Module können bei der Identifizierung von Schwachstellen und der Durchführung von Angriffen auf NFS-Dienste sehr hilfreich sein.

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

Mounten

Um zu wissen, welcher Ordner vom Server zum Mounten verfügbar ist, können Sie ihn mit folgendem Befehl anfragen:

showmount -e <IP>

Dann mounten Sie es mit:

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

Sie sollten angeben, Version 2 zu verwenden, da sie keine Authentifizierung oder Autorisierung hat.

Beispiel:

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

Berechtigungen

Wenn Sie einen Ordner einbinden, der Dateien oder Ordner enthält, die nur von einem bestimmten Benutzer (über UID) zugänglich sind, können Sie lokal einen Benutzer mit dieser UID erstellen und diesen Benutzer verwenden, um auf die Datei/den Ordner zuzugreifen.

NSFShell

Um Dateien einfach aufzulisten, einzubinden und die UID und GID zu ändern, um Zugriff auf Dateien zu erhalten, können Sie nfsshell verwenden.

Nice NFSShell Tutorial.

Konfigurationsdateien

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

Gefährliche Einstellungen

  • Lese- und Schreibberechtigungen (rw): Diese Einstellung erlaubt sowohl das Lesen als auch das Schreiben auf das Dateisystem. Es ist wichtig, die Auswirkungen einer solch weitreichenden Zugriffsberechtigung zu berücksichtigen.

  • Verwendung unsicherer Ports (insecure): Wenn diese Option aktiviert ist, kann das System Ports über 1024 nutzen. Die Sicherheit von Ports über diesem Bereich kann geringer sein, was das Risiko erhöht.

  • Sichtbarkeit von verschachtelten Dateisystemen (nohide): Diese Konfiguration macht Verzeichnisse sichtbar, auch wenn ein anderes Dateisystem unter einem exportierten Verzeichnis eingebunden ist. Jedes Verzeichnis erfordert einen eigenen Exporteintrag für eine ordnungsgemäße Verwaltung.

  • Eigentum von Root-Dateien (no_root_squash): Mit dieser Einstellung behalten Dateien, die vom Root-Benutzer erstellt wurden, ihre ursprüngliche UID/GID von 0 bei, ohne das Prinzip des geringsten Privilegs zu beachten und potenziell übermäßige Berechtigungen zu gewähren.

  • Kein Squashing aller Benutzer (no_all_squash): Diese Option stellt sicher, dass Benutzeridentitäten im gesamten System erhalten bleiben, was zu Berechtigungs- und Zugriffskontrollproblemen führen kann, wenn sie nicht korrekt behandelt werden.

Privilege Escalation durch NFS-Fehlkonfigurationen

NFS no_root_squash und no_all_squash Privilege Escalation

HackTricks Automatische Befehle

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}
Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Last updated