2049 - Pentesting NFS Service

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Informazioni di base

NFS è un sistema progettato per client/server che consente agli utenti di accedere in modo trasparente ai file su una rete come se questi file fossero situati all'interno di una directory locale.

Un aspetto notevole di questo protocollo è la 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 di solito si basa sugli identificatori UNIX UID/GID e l'appartenenza ai gruppi. Tuttavia, si presenta una sfida a causa della possibile discrepanza nelle corrispondenze UID/GID tra client e server, lasciando poco spazio per una 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 (tranne la versione 4, che 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 variabili dei file e offrendo meccanismi di segnalazione degli errori migliorati. Nonostante i suoi progressi, ha incontrato limitazioni nella piena compatibilità all'indietro con i client NFSv2.

  • NFSv4: Una versione di riferimento nella serie NFS, NFSv4 ha introdotto una serie di funzionalità progettate per modernizzare la condivisione dei file su reti. Miglioramenti notevoli includono l'integrazione di Kerberos per una sicurezza elevata, la capacità di attraversare i firewall e operare su Internet senza la necessità di portmappers, il supporto per le Access Control Lists (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 dei file di rete.

Ogni versione di NFS è stata sviluppata con l'intento di affrontare le esigenze in continua evoluzione degli ambienti di rete, migliorando progressivamente la sicurezza, la compatibilità e le prestazioni.

Enumerazione

Utili script di nmap

nfs-ls #List NFS exports and check permissions
nfs-showmount #Like showmount -e
nfs-statfs #Disk statistics and info from NFS share

Moduli utili di Metasploit

Metasploit è un framework di test di penetrazione ampiamente utilizzato che offre una vasta gamma di moduli per l'esecuzione di attacchi e test di penetrazione. Di seguito sono elencati alcuni dei moduli più utili di Metasploit:

  • exploit/multi/handler: Questo modulo consente di creare un gestore per le connessioni in entrata, consentendo di intercettare e sfruttare le connessioni di un exploit riuscito.

  • exploit/multi/script/web_delivery: Questo modulo consente di consegnare un payload tramite un server web, consentendo di eseguire codice arbitrario sul sistema di destinazione.

  • exploit/windows/smb/ms17_010_eternalblue: Questo modulo sfrutta la vulnerabilità EternalBlue nel protocollo SMBv1 di Windows per ottenere l'esecuzione remota di codice su un sistema di destinazione.

  • auxiliary/scanner/portscan/tcp: Questo modulo consente di eseguire una scansione delle porte TCP su un host di destinazione, identificando le porte aperte e i servizi in ascolto.

  • auxiliary/scanner/smb/smb_version: Questo modulo consente di identificare la versione del protocollo SMB in uso su un host di destinazione.

  • post/multi/manage/shell_to_meterpreter: Questo modulo consente di convertire una shell di sistema ottenuta in un sessione Meterpreter, fornendo funzionalità avanzate per il controllo del sistema di destinazione.

  • post/multi/gather/enum_domain: Questo modulo consente di raccogliere informazioni sul dominio di destinazione, inclusi utenti, gruppi e computer.

  • post/multi/gather/enum_applications: Questo modulo consente di raccogliere informazioni sulle applicazioni installate sul sistema di destinazione.

Questi sono solo alcuni dei moduli disponibili in Metasploit. Il framework offre una vasta gamma di funzionalità e moduli per supportare i test di penetrazione su una varietà di sistemi e servizi.

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

Montaggio

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

showmount -e <IP>

Quindi 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 quell'utente sarai in grado di accedere al file/cartella.

NSFShell

Per elencare, montare e cambiare UID e GID per avere accesso ai file, puoi utilizzare nfsshell.

Bel 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 non sicure (insecure): Quando abilitato, ciò 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 nidificati (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 corretta gestione.

  • 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 privilegio minimo e potenzialmente concedendo autorizzazioni eccessive.

  • Non soppressione di tutti gli utenti (no_all_squash): Questa opzione garantisce che le identità degli utenti siano preservate in tutto il sistema, il che potrebbe causare problemi di autorizzazione e controllo dell'accesso se non gestiti correttamente.

Escalation dei privilegi utilizzando errori di configurazione NFS

Escalation dei privilegi NFS no_root_squash e no_all_squash

Comandi automatici di HackTricks

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}
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Last updated