# 2049 - Pentesting del servizio NFS
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)! * Lavori in una **azienda di sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata in HackTricks**? o vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Scopri [**The PEASS Family**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Condividi i tuoi trucchi di hacking inviando PR al [repo hacktricks](https://github.com/carlospolop/hacktricks) e al [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
## **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 ```bash 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. ```bash scanner/nfs/nfsmount #Scan NFS mounts and list permissions ``` ### Montaggio Per sapere **quale cartella** il server ha **disponibile** per il montaggio, puoi chiederglielo usando: ```bash showmount -e ``` Quindi montalo usando: ```bash mount -t nfs [-o vers=2] : -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 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](https://github.com/NetDirect/nfsshell). [Bel tutorial su NFSShell.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/) ## 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](../linux-hardening/privilege-escalation/nfs-no\_root\_squash-misconfiguration-pe.md) ## 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)! * Lavori in un'azienda di **sicurezza informatica**? Vuoi vedere la tua **azienda pubblicizzata in HackTricks**? o vuoi avere accesso all'**ultima versione di PEASS o scaricare HackTricks in PDF**? Controlla i [**PACCHETTI DI ABBONAMENTO**](https://github.com/sponsors/carlospolop)! * Scopri [**La Famiglia PEASS**](https://opensea.io/collection/the-peass-family), la nostra collezione di esclusive [**NFT**](https://opensea.io/collection/the-peass-family) * Ottieni il [**merchandising ufficiale di PEASS & HackTricks**](https://peass.creator-spring.com) * **Unisciti al** [**💬**](https://emojipedia.org/speech-balloon/) [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo Telegram**](https://t.me/peass) o **seguimi** su **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Condividi i tuoi trucchi di hacking inviando PR al [repo hacktricks](https://github.com/carlospolop/hacktricks) e al [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.