2049 - Pentesting NFS Service

Reading time: 6 minutes

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks

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 sulle 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 poco spazio per ulteriori verifiche 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

Montaggio

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

bash
showmount -e <IP>

Quindi 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, montare e cambiare facilmente UID e GID per avere accesso ai file puoi usare nfsshell.

Nice NFSShell tutorial.

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 le directory visibili 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}

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks