2049 - Pentesting NFS Service
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).
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
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.
Mounten
Um zu wissen, welcher Ordner vom Server zum Mounten verfügbar ist, können Sie ihn mit folgendem Befehl anfragen:
Dann mounten Sie es mit:
Sie sollten angeben, Version 2 zu verwenden, da sie keine Authentifizierung oder Autorisierung hat.
Beispiel:
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.
Konfigurationsdateien
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
Last updated