# 2049 - Pentesting NFS Service {% hint style="success" %} Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} ## **Osnovne informacije** **NFS** je sistem dizajniran za **klijent/server** koji omogućava korisnicima da besprekorno pristupaju datotekama preko mreže kao da su te datoteke smeštene unutar lokalnog direktorijuma. Značajan aspekt ovog protokola je njegov nedostatak ugrađenih **mehanizama autentifikacije** ili **autorizacije**. Umesto toga, autorizacija se oslanja na **informacije o datotečnom sistemu**, pri čemu je server zadužen za tačno prevođenje **informacija o korisniku koje pruža klijent** u potrebni **format autorizacije** datotečnog sistema, prvenstveno prateći **UNIX sintaksu**. Autentifikacija se obično oslanja na **UNIX `UID`/`GID` identifikatore i članstva u grupama**. Međutim, izazov nastaje zbog potencijalne nesaglasnosti u **`UID`/`GID` mapiranju** između klijenata i servera, ostavljajući bez prostora za dodatnu verifikaciju od strane servera. Kao rezultat, protokol je najbolje koristiti unutar **pouzdanih mreža**, s obzirom na to da se oslanja na ovu metodu autentifikacije. **Podrazumevani port**: 2049/TCP/UDP (osim verzije 4, potrebni su samo TCP ili UDP). ``` 2049/tcp open nfs 2-3 (RPC #100003 ``` ### Verzije - **NFSv2**: Ova verzija je prepoznata po širokoj kompatibilnosti sa raznim sistemima, označavajući njen značaj sa početnim operacijama pretežno preko UDP-a. Kao **najstarija** u seriji, postavila je temelje za buduće razvoj. - **NFSv3**: Uvedena sa nizom poboljšanja, NFSv3 je proširila svog prethodnika podržavajući promenljive veličine datoteka i nudeći poboljšane mehanizme izveštavanja o greškama. I pored svojih napredaka, suočila se sa ograničenjima u punoj unazadnoj kompatibilnosti sa NFSv2 klijentima. - **NFSv4**: Prelomna verzija u NFS seriji, NFSv4 je donela niz funkcija dizajniranih da modernizuju deljenje datoteka preko mreža. Značajna poboljšanja uključuju integraciju Kerberosa za **visoku sigurnost**, sposobnost prelaska kroz vatrozidove i rad preko Interneta bez potrebe za portmaperima, podršku za liste kontrole pristupa (ACL), i uvođenje operacija zasnovanih na stanju. Njena poboljšanja u performansama i usvajanje protokola zasnovanog na stanju izdvajaju NFSv4 kao ključni napredak u tehnologijama deljenja mrežnih datoteka. Svaka verzija NFS-a je razvijena sa namerom da odgovori na evoluirajuće potrebe mrežnih okruženja, postepeno poboljšavajući sigurnost, kompatibilnost i performanse. ## Enumeracija ### Korisni nmap skripti ```bash nfs-ls #List NFS exports and check permissions nfs-showmount #Like showmount -e nfs-statfs #Disk statistics and info from NFS share ``` ### Korisni metasploit moduli ```bash scanner/nfs/nfsmount #Scan NFS mounts and list permissions ``` ### Mounting Da biste saznali **koju fasciklu** server ima **dostupnu** za montiranje, možete ga pitati koristeći: ```bash showmount -e ``` Zatim ga montirajte koristeći: ```bash mount -t nfs [-o vers=2] : -o nolock ``` Trebalo bi da navedete da **koristite verziju 2** jer nema **nikakvu** **autentifikaciju** ili **autorizaciju**. **Primer:** ```bash mkdir /mnt/new_back mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock ``` ## Dozvole Ako montirate folder koji sadrži **fajlove ili foldere koji su dostupni samo nekim korisnicima** (preko **UID**). Možete **napraviti** **lokalno** korisnika sa tim **UID** i koristeći tog **korisnika** moći ćete da **pristupite** fajlu/folderu. ## NSFShell Da biste lako listali, montirali i menjali UID i GID kako biste imali pristup fajlovima, možete koristiti [nfsshell](https://github.com/NetDirect/nfsshell). [Nice NFSShell tutorial.](https://www.pentestpartners.com/security-blog/using-nfsshell-to-compromise-older-environments/) ## Konfiguracione datoteke ``` /etc/exports /etc/lib/nfs/etab ``` ### Opasne postavke - **Dozvole za čitanje i pisanje (`rw`):** Ova postavka omogućava i čitanje i pisanje u fajl sistem. Važno je razmotriti posledice davanja tako širokog pristupa. - **Korišćenje nesigurnih portova (`insecure`):** Kada je omogućeno, ovo omogućava sistemu da koristi portove iznad 1024. Bezbednost portova iznad ovog opsega može biti manje stroga, povećavajući rizik. - **Vidljivost ugnježdenih fajl sistema (`nohide`):** Ova konfiguracija čini direktorijume vidljivim čak i ako je drugi fajl sistem montiran ispod izvezenog direktorijuma. Svakom direktorijumu je potrebna sopstvena izvozna stavka za pravilno upravljanje. - **Vlasništvo fajlova od strane root korisnika (`no_root_squash`):** Sa ovom postavkom, fajlovi koje kreira root korisnik zadržavaju svoj originalni UID/GID od 0, zanemarujući princip minimalnih privilegija i potencijalno dodeljujući prekomerne dozvole. - **Nesmanjenje svih korisnika (`no_all_squash`):** Ova opcija osigurava da identiteti korisnika budu očuvani širom sistema, što može dovesti do problema sa dozvolama i kontrolom pristupa ako se ne upravlja pravilno. ## Eskalacija privilegija korišćenjem NFS pogrešnih konfiguracija [NFS no\_root\_squash i no\_all\_squash eskalacija privilegija](../linux-hardening/privilege-escalation/nfs-no\_root\_squash-misconfiguration-pe.md) ## HackTricks Automatske komande ``` 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" %} Učite i vežbajte AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ Učite i vežbajte GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Podržite HackTricks * Proverite [**planove pretplate**](https://github.com/sponsors/carlospolop)! * **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili **pratite** nas na **Twitteru** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** * **Podelite hakerske trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
{% endhint %}