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

141 lines
8.9 KiB
Markdown
Raw Normal View History

# 2049 - Pentesting NFS Service
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
<summary>Support HackTricks</summary>
2022-04-28 16:01:33 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
## **Grundinformationen**
**NFS** ist ein System, das für **Client/Server** konzipiert wurde und es Benutzern ermöglicht, nahtlos auf Dateien über ein 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 dafür verantwortlich ist, die **vom Client bereitgestellten Benutzerinformationen** in das erforderliche **Autorisierungsformat** des Dateisystems genau zu übersetzen, hauptsächlich gemäß der **UNIX-Syntax**.
2022-10-02 19:15:35 +00:00
Die Authentifizierung beruht häufig auf **UNIX `UID`/`GID`-Identifikatoren und Gruppenmitgliedschaften**. Ein Problem ergibt sich jedoch aufgrund der möglichen Diskrepanz in den **`UID`/`GID`-Zuordnungen** zwischen Clients und Servern, was keinen Raum für zusätzliche Überprüfungen durch den Server lässt. Folglich ist das Protokoll am besten für die Verwendung innerhalb von **vertrauenswürdigen Netzwerken** geeignet, da es auf dieser Methode der Authentifizierung basiert.
**Standardport**: 2049/TCP/UDP (außer Version 4, es benötigt nur TCP oder UDP).&#x20;
2022-05-01 13:25:53 +00:00
```
2049/tcp open nfs 2-3 (RPC #100003
```
2024-02-10 15:36:32 +00:00
### Versionen
- **NFSv2**: Diese Version ist bekannt für ihre breite Kompatibilität mit verschiedenen Systemen und markiert ihre Bedeutung mit anfänglichen Operationen überwiegend über UDP. Als die **älteste** in der Reihe legte sie den Grundstein für zukünftige Entwicklungen.
2022-10-02 19:15:35 +00:00
- **NFSv3**: Eingeführt mit einer Reihe von Verbesserungen, erweiterte NFSv3 seinen Vorgänger, indem es variable Dateigrößen unterstützte und verbesserte Fehlerberichterstattungsmechanismen bot. Trotz seiner Fortschritte hatte es Einschränkungen in der vollständigen Rückwärtskompatibilität mit NFSv2-Clients.
2024-02-08 21:36:15 +00:00
- **NFSv4**: Eine wegweisende Version in der NFS-Serie, brachte NFSv4 eine Reihe von Funktionen mit sich, die darauf abzielen, die Dateifreigabe über Netzwerke zu modernisieren. Zu den bemerkenswerten Verbesserungen gehören die Integration von Kerberos für **hohe Sicherheit**, die Fähigkeit, Firewalls zu durchqueren und über das Internet ohne die Notwendigkeit von Portmappern zu arbeiten, Unterstützung für Access Control Lists (ACLs) und die Einführung von zustandsbasierten Operationen. Die Leistungsverbesserungen und die Annahme eines zustandsbehafteten Protokolls heben NFSv4 als einen entscheidenden Fortschritt in der Technologie der Netzwerkdateifreigabe hervor.
2024-02-08 21:36:15 +00:00
Jede Version von NFS wurde mit dem Ziel entwickelt, den sich entwickelnden Bedürfnissen von Netzwerkumgebungen gerecht zu werden und dabei Sicherheit, Kompatibilität und Leistung schrittweise zu verbessern.
2022-10-02 19:15:35 +00:00
2022-05-01 13:25:53 +00:00
## Enumeration
2024-02-10 15:36:32 +00:00
### 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
```
2024-02-10 15:36:32 +00:00
### Nützliche Metasploit-Module
```bash
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
```
### Mounting
Um zu wissen, **welcher Ordner** dem Server **verfügbar** ist, um ihn zu mounten, können Sie ihn fragen mit:
```bash
showmount -e <IP>
```
2024-02-10 15:36:32 +00:00
Dann mounten Sie es mit:
```bash
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
```
Sie sollten **Version 2** **verwenden**, da sie **keine** **Authentifizierung** oder **Autorisierung** hat.
2024-02-10 15:36:32 +00:00
**Beispiel:**
```bash
mkdir /mnt/new_back
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
```
2024-02-10 15:36:32 +00:00
## Berechtigungen
Wenn Sie einen Ordner einhängen, der **Dateien oder Ordner enthält, die nur von einem bestimmten Benutzer** (durch **UID**) zugänglich sind. Sie können **lokal** einen Benutzer mit dieser **UID** erstellen und mit diesem **Benutzer** werden Sie in der Lage sein, auf die Datei/den Ordner zu **zugreifen**.
2022-05-01 13:25:53 +00:00
## NSFShell
Um Dateien einfach aufzulisten, einzuhängen und UID sowie 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/)
2024-02-10 15:36:32 +00:00
## Konfigurationsdateien
2022-05-01 13:25:53 +00:00
```
/etc/exports
/etc/lib/nfs/etab
```
2024-02-10 15:36:32 +00:00
### Gefährliche Einstellungen
- **Lese- und Schreibberechtigungen (`rw`):** Diese Einstellung erlaubt sowohl das Lesen als auch das Schreiben im Dateisystem. Es ist wichtig, die Auswirkungen einer so breiten Zugriffsgewährung zu berücksichtigen.
2022-10-02 19:15:35 +00:00
- **Verwendung unsicherer Ports (`insecure`):** Wenn aktiviert, erlaubt dies dem System, Ports über 1024 zu nutzen. Die Sicherheit von Ports in diesem Bereich kann weniger streng sein, was das Risiko erhöht.
2024-02-08 21:36:15 +00:00
- **Sichtbarkeit von verschachtelten Dateisystemen (`nohide`):** Diese Konfiguration macht Verzeichnisse sichtbar, selbst wenn ein anderes Dateisystem unter einem exportierten Verzeichnis gemountet ist. Jedes Verzeichnis benötigt seinen eigenen Exporteintrag für eine ordnungsgemäße Verwaltung.
2024-02-08 21:36:15 +00:00
- **Besitz von Root-Dateien (`no_root_squash`):** Mit dieser Einstellung behalten Dateien, die vom Root-Benutzer erstellt werden, ihre ursprüngliche UID/GID von 0, was das Prinzip der minimalen Berechtigung missachtet und potenziell übermäßige Berechtigungen gewährt.
2024-02-08 21:36:15 +00:00
- **Nicht-Squashing aller Benutzer (`no_all_squash`):** Diese Option stellt sicher, dass die Benutzeridentitäten im gesamten System erhalten bleiben, was zu Berechtigungs- und Zugriffssteuerungsproblemen führen kann, wenn es nicht korrekt behandelt wird.
2022-10-02 19:15:35 +00:00
## Privilegieneskalation durch NFS-Misconfigurationen
2022-10-02 19:15:35 +00:00
[NFS no\_root\_squash und no\_all\_squash Privilegieneskalation](../linux-hardening/privilege-escalation/nfs-no\_root\_squash-misconfiguration-pe.md)
2021-08-12 12:55:42 +00:00
2024-02-10 15:36:32 +00:00
## HackTricks Automatische Befehle
2022-05-01 13:25:53 +00:00
```
2021-08-12 12:55:42 +00:00
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
2021-08-15 17:39:13 +00:00
Entry_1:
2024-02-10 15:36:32 +00:00
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.
2021-08-15 17:39:13 +00:00
2024-02-10 15:36:32 +00:00
#apt install nfs-common
showmount 10.10.10.180 ~or~showmount -e 10.10.10.180
should show you available shares (example /home)
2024-02-10 15:36:32 +00:00
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
2021-08-12 12:55:42 +00:00
2024-02-10 15:36:32 +00:00
https://book.hacktricks.xyz/pentesting/nfs-service-pentesting
2021-08-12 12:55:42 +00:00
2021-08-15 17:39:13 +00:00
Entry_2:
2024-02-10 15:36:32 +00:00
Name: Nmap
Description: Nmap with NFS Scripts
Command: nmap --script=nfs-ls.nse,nfs-showmount.nse,nfs-statfs.nse -p 2049 {IP}
2021-08-12 12:55:42 +00:00
```
{% hint style="success" %}
Lerne & übe AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Lerne & übe GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2022-04-28 16:01:33 +00:00
<details>
<summary>Unterstütze HackTricks</summary>
2022-04-28 16:01:33 +00:00
* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)!
* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}