NFS no_root_squash/no_all_squash misconfiguration PE
Pročitajte datoteku _ /etc/exports _, ako pronađete neki direktorijum koji je konfigurisan kao no_root_squash, tada ga možete pristupiti kao klijent i pisati unutar tog direktorijuma kao da ste lokalni root mašine.
no_root_squash: Ova opcija omogućava korisniku root na klijentu da pristupa datotekama na NFS serveru kao root. Ovo može dovesti do ozbiljnih sigurnosnih posledica.
no_all_squash: Ovo je slična opcija kao no_root_squash, ali se odnosi na non-root korisnike. Zamislite, imate shell kao nobody korisnik; proverite datoteku /etc/exports; opcija no_all_squash je prisutna; proverite datoteku /etc/passwd; emulirajte non-root korisnika; kreirajte suid datoteku kao taj korisnik (montiranjem pomoću nfs). Izvršite suid kao nobody korisnik i postanite drugi korisnik.
Eskalacija privilegija
Udaljeni napad
Ako ste pronašli ovu ranjivost, možete je iskoristiti:
Montiranjem tog direktorijuma na klijentskoj mašini, i kao root kopiranjem unutar montiranog foldera /bin/bash binarnu datoteku i davanje SUID prava, i izvršavanje sa žrtvene mašine te bash binarne datoteke.
Montiranje tog direktorijuma na klijentskom računaru, i kopiranje kao root unutar montiranog foldera našeg kompajliranog payloada koji će zloupotrebiti SUID dozvole, dati mu SUID prava, i izvršiti sa žrtvinog računara tu binarnu datoteku (ovde možete pronaći neke C SUID payloade).
Lokalni eksploit
Imajte na umu da ako možete da napravite tunel sa vašeg računara do računara žrtve, i dalje možete koristiti udaljenu verziju za iskorišćavanje ovog eskalacije privilegija tuneliranjem potrebnih portova.
Sledeći trik je u slučaju da datoteka /etc/exports
ukazuje na IP adresu. U ovom slučaju, nećete moći da koristite udaljeni eksploit i moraćete da zloupotrebite ovaj trik.
Još jedan neophodan uslov za iskorišćavanje eksploita je da izvoz unutar /etc/export
mora koristiti insecure
zastavicu.
--Nisam siguran da li će ovaj trik raditi ako /etc/export
ukazuje na IP adresu--
Osnovne informacije
Scenario uključuje iskorišćavanje montiranog NFS deljenog resursa na lokalnom računaru, iskorišćavanjem greške u NFSv3 specifikaciji koja omogućava klijentu da specificira svoj uid/gid, potencijalno omogućavajući neovlašćeni pristup. Iskorišćavanje uključuje korišćenje libnfs, biblioteke koja omogućava falsifikovanje NFS RPC poziva.
Kompilacija biblioteke
Koraci kompilacije biblioteke mogu zahtevati prilagođavanje na osnovu verzije jezgra. U ovom konkretnom slučaju, fallocate syscalls su bili zakomentarisani. Proces kompilacije uključuje sledeće komande:
Izvođenje napada
Napad uključuje kreiranje jednostavnog C programa (pwn.c
) koji povećava privilegije na root i zatim izvršava shell. Program se kompajlira, a rezultirajući binarni fajl (a.out
) se postavlja na deljeni folder sa suid root, koristeći ld_nfs.so
da bi se lažirao uid u RPC pozivima:
Kompajlirajte kod napada:
Postavite napad na deljeni folder i izmenite dozvole lažiranjem uid-a:
Izvršite napad da biste dobili privilegije root-a:
Bonus: NFShell za neprimetan pristup fajlovima
Kada se dobije pristup kao root, za interakciju sa NFS deljenim folderom bez menjanja vlasništva (kako bi se izbegli tragovi), koristi se Python skripta (nfsh.py). Ova skripta prilagođava uid da odgovara uid-u fajla koji se pristupa, omogućavajući interakciju sa fajlovima na deljenom folderu bez problema sa dozvolama:
Pokrenite kao:
Reference
Last updated