# 2049 - Pentesting des NFS-Dienstes
Lernen Sie das Hacken von AWS von Grund auf mit htARTE (HackTricks AWS Red Team Expert)! * Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks im PDF-Format** haben? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)! * Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family) * Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com) * **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das [hacktricks repo](https://github.com/carlospolop/hacktricks) und das [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)** senden.
## **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 ```bash 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. ```bash 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: ```bash showmount -e ``` Dann mounten Sie es mit: ```bash mount -t nfs [-o vers=2] : -o nolock ``` Sie sollten angeben, **Version 2 zu verwenden**, da sie **keine** **Authentifizierung** oder **Autorisierung** hat. **Beispiel:** ```bash 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](https://github.com/NetDirect/nfsshell) verwenden. [Nice NFSShell Tutorial.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/) ## 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](../linux-hardening/privilege-escalation/nfs-no\_root\_squash-misconfiguration-pe.md) ## 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)! * Arbeiten Sie in einem **Cybersicherheitsunternehmen**? Möchten Sie Ihr **Unternehmen in HackTricks bewerben**? Oder möchten Sie Zugriff auf die **neueste Version von PEASS oder HackTricks als PDF herunterladen**? Überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)! * Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family). * Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com). * **Treten Sie der** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie mir auf **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an das [hacktricks repo](https://github.com/carlospolop/hacktricks) und [hacktricks-cloud repo](https://github.com/carlospolop/hacktricks-cloud)** einreichen.