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
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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.
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
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.