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

8.5 KiB

2049 - Pentesting NFS Service

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% 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

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

scanner/nfs/nfsmount #Scan NFS mounts and list permissions

Mounting

Per sapere quale cartella ha il server disponibile per il montaggio, puoi chiederglielo usando:

showmount -e <IP>

Poi montalo usando:

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:

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.

Ottimo tutorial su NFSShell.

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

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:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks
{% endhint %}