NFS no_root_squash/no_all_squash misconfiguration PE
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)
Pročitajte _ /etc/exports _ datoteku, ako pronađete neku direktoriju koja je konfigurisana kao no_root_squash, tada možete pristupiti njoj kao klijent i pisati unutar te direktorije kao da ste lokalni root mašine.
no_root_squash: Ova opcija u suštini daje ovlašćenje root korisniku na klijentu da pristupi datotekama na NFS serveru kao root. I to može dovesti do ozbiljnih bezbednosnih implikacija.
no_all_squash: Ovo je slično no_root_squash opciji, ali se primenjuje na ne-root korisnike. Zamislite, imate shell kao nobody korisnik; proverili ste /etc/exports datoteku; opcija no_all_squash je prisutna; proverite /etc/passwd datoteku; emulirajte ne-root korisnika; kreirajte suid datoteku kao taj korisnik (montiranjem koristeći nfs). Izvršite suid kao nobody korisnik i postanite drugi korisnik.
Ako ste pronašli ovu ranjivost, možete je iskoristiti:
Montiranje te direktorije na klijentskoj mašini, i kao root kopiranje unutar montirane fascikle /bin/bash binarnu datoteku i davanje SUID prava, i izvršavanje sa žrtvovane mašine te bash binarne datoteke.
Montiranje te direktorije na klijentskoj mašini, i kao root kopiranje unutar montirane fascikle našeg kompajliranog payload-a koji će zloupotrebiti SUID dozvolu, dati mu SUID prava, i izvršiti sa žrtvovane mašine tu binarnu datoteku (ovde možete pronaći neke C SUID payload-e).
Imajte na umu da ako možete da kreirate tunel sa vašeg računara na računar žrtve, još uvek možete koristiti daljinsku verziju za eksploataciju ovog eskalacije privilegija tunelovanjem potrebnih portova.
Sledeći trik se koristi u slučaju da datoteka /etc/exports
ukazuje na IP. U ovom slučaju nećete moći da koristite u bilo kom slučaju daljinski eksploit i biće potrebno da zloupotrebite ovaj trik.
Još jedan neophodan uslov za rad eksploita je da izvoz unutar /etc/export
mora koristiti insecure
flag.
--Nisam siguran da li će ovaj trik raditi ako /etc/export
ukazuje na IP adresu--
Scenario uključuje eksploataciju montiranog NFS dela na lokalnom računaru, koristeći grešku u NFSv3 specifikaciji koja omogućava klijentu da specificira svoj uid/gid, potencijalno omogućavajući neovlašćen pristup. Eksploatacija uključuje korišćenje libnfs, biblioteke koja omogućava falsifikovanje NFS RPC poziva.
Koraci za kompilaciju biblioteke mogu zahtevati prilagođavanja u zavisnosti od verzije kernela. U ovom specifičnom slučaju, fallocate syscalls su bili komentarisani. Proces kompilacije uključuje sledeće komande:
Eksploit uključuje kreiranje jednostavnog C programa (pwn.c
) koji povećava privilegije na root i zatim izvršava shell. Program se kompajlira, a rezultantni binarni fajl (a.out
) se postavlja na deljenje sa suid root, koristeći ld_nfs.so
da lažira uid u RPC pozivima:
Kompajlirajte kod eksploata:
Postavite eksploat na deljenje i izmenite njegove dozvole lažiranjem uid-a:
Izvršite eksploat da dobijete root privilegije:
Kada se dobije root pristup, za interakciju sa NFS deljenjem bez promene vlasništva (da bi se izbegli tragovi), koristi se Python skripta (nfsh.py). Ova skripta prilagođava uid da odgovara onom fajlu koji se pristupa, omogućavajući interakciju sa fajlovima na deljenju bez problema sa dozvolama:
Pokreni kao:
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)