mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-25 12:33:39 +00:00
145 lines
10 KiB
Markdown
145 lines
10 KiB
Markdown
# 2049 - Pentesting des NFS-Dienstes
|
|
|
|
<details>
|
|
|
|
<summary><strong>Lernen Sie das Hacken von AWS von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
* 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.
|
|
|
|
</details>
|
|
|
|
## **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 <IP>
|
|
```
|
|
Dann mounten Sie es mit:
|
|
```bash
|
|
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:**
|
|
```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}
|
|
```
|
|
<details>
|
|
|
|
<summary><strong>Lernen Sie AWS-Hacking von Null auf Held mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
* 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.
|
|
|
|
</details>
|