2049 - Pentesting NFS Service

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Osnovne informacije

NFS je sistem dizajniran za klijent/server koji omogućava korisnicima da na mreži pristupaju datotekama kao da se one nalaze u lokalnom direktorijumu.

Značajan aspekt ovog protokola je nedostatak ugrađenih mekanizama za autentifikaciju ili autorizaciju. Umesto toga, autorizacija se oslanja na informacije o fajl sistemu, pri čemu je server zadužen za tačno prevođenje informacija o korisniku koje pruža klijent u potrebni format autorizacije fajl sistema, uglavnom prateći UNIX sintaksu.

Autentifikacija se obično oslanja na UNIX UID/GID identifikatore i članstvo u grupama. Međutim, izazov se javlja zbog potencijalne neusklađenosti u mapiranjima UID/GID između klijenata i servera, ne ostavljajući prostora za dodatnu verifikaciju od strane servera. Stoga je protokol najbolje prilagođen za upotrebu unutar poverenih mreža, s obzirom na njegovu oslanjanje na ovaj metod autentifikacije.

Podrazumevani port: 2049/TCP/UDP (osim verzije 4, koja zahteva samo TCP ili UDP).

2049/tcp open  nfs     2-3 (RPC #100003

Verzije

  • NFSv2: Ova verzija je poznata po svojoj širokoj kompatibilnosti sa različitim sistemima, a njen značaj se ogleda u tome što su početne operacije uglavnom izvršavane preko UDP-a. Kao najstarija u seriji, postavila je temelje za budući razvoj.

  • NFSv3: Uvedena sa nizom poboljšanja, NFSv3 je proširio svoje prethodnika podržavajući promenljive veličine fajlova i nudeći unapređeni mehanizam za prijavu grešaka. Uprkos svojim napredovanjima, suočavao se sa ograničenjima u potpunoj kompatibilnosti sa NFSv2 klijentima.

  • NFSv4: Pionirska verzija u seriji NFS, NFSv4 je donela niz funkcionalnosti dizajniranih za modernizaciju deljenja fajlova preko mreže. Značajna poboljšanja uključuju integraciju Kerberosa za visoku bezbednost, mogućnost prolaska kroz firewall-ove i rad preko interneta bez potrebe za portmaperima, podršku za Access Control List (ACL) i uvođenje operacija zasnovanih na stanju. Njegova poboljšanja performansi i usvajanje protokola sa stanjem izdvajaju NFSv4 kao ključni napredak u tehnologijama deljenja fajlova preko mreže.

Svaka verzija NFS-a je razvijena sa namerom da se adresiraju evoluirajuće potrebe mrežnih okruženja, postepeno unapređujući bezbednost, kompatibilnost i performanse.

Enumeracija

Korisni nmap skriptovi

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

Metasploit je moćan alat za testiranje penetracije koji pruža širok spektar modula za iskorišćavanje ranjivosti. Ovi moduli omogućavaju hakerima da automatizuju proces pronalaženja i iskorišćavanja ranjivosti u ciljnom sistemu. Evo nekoliko korisnih metasploit modula koji se mogu koristiti u testiranju penetracije:

  • exploit/multi/handler: Ovaj modul omogućava hakerima da postave "ručni" iskorišćavač koji će osluškivati dolazne veze i preuzeti kontrolu nad ranjivim sistemom.

  • exploit/windows/smb/ms17_010_eternalblue: Ovaj modul iskorišćava ranjivost EternalBlue u Windows SMB protokolu kako bi omogućio hakerima da izvrše udaljeni kod na ciljnom Windows sistemu.

  • exploit/linux/ftp/vsftpd_234_backdoor: Ovaj modul iskorišćava ranjivost u vsftpd FTP serveru verzije 2.3.4 koja omogućava hakerima da dobiju udaljeni pristup sistemu.

  • exploit/multi/http/php_cgi_arg_injection: Ovaj modul iskorišćava ranjivost u PHP CGI skriptama koja omogućava hakerima da izvrše proizvoljan kod na ciljnom sistemu.

  • exploit/multi/misc/java_rmi_server: Ovaj modul iskorišćava ranjivost u Java RMI serverima koja omogućava hakerima da izvrše proizvoljan kod na ciljnom sistemu.

  • exploit/multi/browser/java_signed_applet: Ovaj modul iskorišćava ranjivost u Java potpisanim appletima koja omogućava hakerima da izvrše proizvoljan kod na ciljnom sistemu.

Ovi moduli su samo neki od mnogih dostupnih u Metasploit okruženju. Hakeri mogu koristiti ove module kao deo svoje strategije testiranja penetracije kako bi identifikovali i iskoristili ranjivosti u ciljnom sistemu.

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

Montiranje

Da biste saznali koji folder na serveru je dostupan za montiranje, možete ga pitati koristeći:

showmount -e <IP>

Zatim ga montirajte koristeći:

mount -t nfs [-o vers=2] <ip>:<remote_folder> <local_folder> -o nolock

Treba da specificirate da koristite verziju 2 jer ona nema nikakvu autentifikaciju ili autorizaciju.

Primer:

mkdir /mnt/new_back
mount -t nfs [-o vers=2] 10.12.0.150:/backup /mnt/new_back -o nolock

Dozvole

Ako montirate fasciklu koja sadrži datoteke ili fascikle kojima je pristup dozvoljen samo određenom korisniku (preko UID-a), možete lokalno kreirati korisnika sa tim UID-om i koristiti tog korisnika da biste pristupili datoteci/fascikli.

NSFShell

Da biste lako izlistali, montirali i promenili UID i GID kako biste imali pristup datotekama, možete koristiti nfsshell.

Lepe uputstva za korišćenje NFSShell-a.

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 široke pristupne dozvole.

  • Korišćenje nesigurnih portova (insecure): Kada je omogućeno, ovo omogućava sistemu da koristi portove iznad 1024. Sigurnost portova iznad ove 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. Svaki direktorijum zahteva svoj sopstveni unos za izvoz radi pravilnog upravljanja.

  • Vlasništvo fajlova od strane korisnika root (no_root_squash): Sa ovom postavkom, fajlovi kreirani od strane korisnika root zadržavaju svoj originalni UID/GID od 0, ignorirajući princip najmanjih privilegija i potencijalno dodeljujući prekomerne dozvole.

  • Nesquashing svih korisnika (no_all_squash): Ova opcija obezbeđuje da se identiteti korisnika očuvaju u celom sistemu, što može dovesti do problema sa dozvolama i kontrolom pristupa ako se ne rukuje ispravno.

Eskalacija privilegija korišćenjem loše konfigurisanih NFS-a

NFS no_root_squash i no_all_squash eskalacija privilegija

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}
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Last updated