2049 - Pentesting NFS Service
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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).
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 segnalazione 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.
Per sapere quale cartella ha il server disponibile per il montaggio, puoi chiederglielo usando:
Poi montalo usando:
Dovresti specificare di utilizzare la versione 2 perché non ha alcuna autenticazione o autorizzazione.
Esempio:
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.
Per elencare, montare e cambiare facilmente UID e GID per avere accesso ai file, puoi usare nfsshell.
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.
NFS no_root_squash e no_all_squash escalation dei privilegi
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)