mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-25 22:20:43 +00:00
140 lines
8.5 KiB
Markdown
140 lines
8.5 KiB
Markdown
# 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)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* 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.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
## **Informazioni di base**
|
|
|
|
**NFS** è un sistema progettato per **client/server** che consente agli utenti di accedere senza problemi ai file su una rete come se questi file fossero situati all'interno di una directory locale.
|
|
|
|
Un aspetto notevole di questo protocollo è la sua mancanza di **meccanismi di autenticazione** o **autorizzazione** integrati. Invece, l'autorizzazione si basa su **informazioni del file system**, con il server incaricato di tradurre accuratamente **le informazioni utente fornite dal client** nel **formato di autorizzazione** richiesto dal file system, seguendo principalmente la **sintassi UNIX**.
|
|
|
|
L'autenticazione si basa comunemente su **identificatori `UID`/`GID` UNIX e appartenenze ai gruppi**. Tuttavia, sorge una sfida a causa della potenziale discrepanza nelle **mappature `UID`/`GID`** tra client e server, lasciando spazio a nessuna verifica aggiuntiva da parte del server. Di conseguenza, il protocollo è più adatto per l'uso all'interno di **reti fidate**, data la sua dipendenza da questo metodo di autenticazione.
|
|
|
|
**Porta predefinita**: 2049/TCP/UDP (eccetto la versione 4, richiede solo TCP o UDP). 
|
|
```
|
|
2049/tcp open nfs 2-3 (RPC #100003
|
|
```
|
|
### Versioni
|
|
|
|
- **NFSv2**: Questa versione è riconosciuta per la sua ampia compatibilità con vari sistemi, segnando la sua importanza con operazioni iniziali prevalentemente su UDP. Essendo la **più vecchia** della serie, ha gettato le basi per sviluppi futuri.
|
|
|
|
- **NFSv3**: Introdotto con una serie di miglioramenti, NFSv3 si è ampliato rispetto al suo predecessore supportando dimensioni di file variabili e offrendo meccanismi di reporting degli errori migliorati. Nonostante i suoi progressi, ha affrontato limitazioni nella piena compatibilità retroattiva con i client NFSv2.
|
|
|
|
- **NFSv4**: Una versione fondamentale nella serie NFS, NFSv4 ha portato una suite di funzionalità progettate per modernizzare la condivisione di file attraverso le reti. I miglioramenti notevoli includono l'integrazione di Kerberos per **alta sicurezza**, la capacità di attraversare firewall e operare su Internet senza la necessità di portmappers, supporto per le Liste di Controllo degli Accessi (ACL) e l'introduzione di operazioni basate sullo stato. I suoi miglioramenti delle prestazioni e l'adozione di un protocollo stateful distinguono NFSv4 come un avanzamento fondamentale nelle tecnologie di condivisione di file in rete.
|
|
|
|
Ogni versione di NFS è stata sviluppata con l'intento di affrontare le esigenze in evoluzione degli ambienti di rete, migliorando progressivamente sicurezza, compatibilità e prestazioni.
|
|
|
|
## Enumerazione
|
|
|
|
### Script nmap utili
|
|
```bash
|
|
nfs-ls #List NFS exports and check permissions
|
|
nfs-showmount #Like showmount -e
|
|
nfs-statfs #Disk statistics and info from NFS share
|
|
```
|
|
### Moduli Metasploit utili
|
|
```bash
|
|
scanner/nfs/nfsmount #Scan NFS mounts and list permissions
|
|
```
|
|
### Mounting
|
|
|
|
Per sapere **quale cartella** ha il server **disponibile** per il montaggio, puoi chiederglielo usando:
|
|
```bash
|
|
showmount -e <IP>
|
|
```
|
|
Poi montalo usando:
|
|
```bash
|
|
mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock
|
|
```
|
|
Dovresti specificare di **utilizzare la versione 2** perché non ha **alcuna** **autenticazione** o **autorizzazione**.
|
|
|
|
**Esempio:**
|
|
```bash
|
|
mkdir /mnt/new_back
|
|
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock
|
|
```
|
|
## Permessi
|
|
|
|
Se monti una cartella che contiene **file o cartelle accessibili solo da alcuni utenti** (tramite **UID**). Puoi **creare** **localmente** un utente con quel **UID** e utilizzando quel **utente** sarai in grado di **accedere** al file/cartella.
|
|
|
|
## NSFShell
|
|
|
|
Per elencare facilmente, montare e cambiare UID e GID per avere accesso ai file puoi usare [nfsshell](https://github.com/NetDirect/nfsshell).
|
|
|
|
[Ottimo tutorial su NFSShell.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/)
|
|
|
|
## File di configurazione
|
|
```
|
|
/etc/exports
|
|
/etc/lib/nfs/etab
|
|
```
|
|
### Impostazioni pericolose
|
|
|
|
- **Permessi di Lettura e Scrittura (`rw`):** Questa impostazione consente sia la lettura che la scrittura nel file system. È essenziale considerare le implicazioni di concedere un accesso così ampio.
|
|
|
|
- **Utilizzo di Porte Insicure (`insecure`):** Quando abilitato, questo consente al sistema di utilizzare porte superiori a 1024. La sicurezza delle porte al di sopra di questo intervallo può essere meno rigorosa, aumentando il rischio.
|
|
|
|
- **Visibilità dei File System Annidati (`nohide`):** Questa configurazione rende visibili le directory anche se un altro file system è montato sotto una directory esportata. Ogni directory richiede la propria voce di esportazione per una gestione adeguata.
|
|
|
|
- **Proprietà dei File di Root (`no_root_squash`):** Con questa impostazione, i file creati dall'utente root mantengono il loro UID/GID originale di 0, ignorando il principio del minimo privilegio e potenzialmente concedendo permessi eccessivi.
|
|
|
|
- **Non Squashing di Tutti gli Utenti (`no_all_squash`):** Questa opzione garantisce che le identità degli utenti siano preservate in tutto il sistema, il che potrebbe portare a problemi di permessi e controllo degli accessi se non gestito correttamente.
|
|
|
|
## Escalation dei privilegi utilizzando le misconfigurazioni NFS
|
|
|
|
[NFS no\_root\_squash e no\_all\_squash escalation dei privilegi](../linux-hardening/privilege-escalation/nfs-no\_root\_squash-misconfiguration-pe.md)
|
|
|
|
## HackTricks Comandi Automatici
|
|
```
|
|
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}
|
|
```
|
|
{% hint style="success" %}
|
|
Impara e pratica 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">\
|
|
Impara e pratica 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)
|
|
|
|
<details>
|
|
|
|
<summary>Supporta HackTricks</summary>
|
|
|
|
* Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
|
|
* **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos di github.
|
|
|
|
</details>
|
|
{% endhint %}
|