ld.so privesc exploit example
Priprema okruženja
U sledećem odeljku možete pronaći kod datoteka koje ćemo koristiti za pripremu okruženja
Napravite te datoteke na vašem računaru u istom folderu
Kompajlirajte biblioteku:
gcc -shared -o libcustom.so -fPIC libcustom.c
Kopirajte
libcustom.so
u/usr/lib
:sudo cp libcustom.so /usr/lib
(root privilegije)Kompajlirajte izvršnu datoteku:
gcc sharedvuln.c -o sharedvuln -lcustom
Proverite okruženje
Proverite da li se libcustom.so učitava iz /usr/lib i da li možete izvršiti binarnu datoteku.
Eksploatacija
U ovom scenariju pretpostavljamo da je neko kreirao ranjiv unos unutar datoteke u /etc/ld.so.conf/:
Ranjiva mapa je /home/ubuntu/lib (gde imamo pristup za pisanje). Preuzmite i kompajlirajte sledeći kod unutar tog puta:
Sada kada smo kreirali zlonamernu libcustom biblioteku unutar pogrešno konfigurisane putanje, moramo sačekati ponovno pokretanje ili da korisnik sa privilegijama root-a izvrši ldconfig
(u slučaju da možete izvršiti ovu binarnu datoteku kao sudo ili ima suid bit, moći ćete je izvršiti sami).
Kada se to dogodi, ponovo proverite odakle se sharevuln
izvršna datoteka učitava iz biblioteke libcustom.so
:
Kao što možete videti, učitava se iz /home/ubuntu/lib
i ako ga bilo koji korisnik izvrši, izvršiće se shell:
Napomena da u ovom primeru nismo povećali privilegije, ali modifikovanjem izvršenih komandi i čekanjem da korisnik sa privilegijama izvrši ranjivu binarnu datoteku možemo povećati privilegije.
Ostale loše konfiguracije - Ista ranjivost
U prethodnom primeru smo lažirali lošu konfiguraciju gde je administrator postavio folder bez privilegija unutar konfiguracione datoteke unutar /etc/ld.so.conf.d/
.
Ali postoje i druge loše konfiguracije koje mogu izazvati istu ranjivost, ako imate dozvole za pisanje u nekoj konfiguracionoj datoteci unutar /etc/ld.so.conf.d
, u folderu /etc/ld.so.conf.d
ili u datoteci /etc/ld.so.conf
, možete konfigurisati istu ranjivost i iskoristiti je.
Eksploatacija 2
Pretpostavimo da imate sudo privilegije nad ldconfig
.
Možete navesti ldconfig
odakle da učita konfiguracione datoteke, tako da možemo iskoristiti to da ldconfig
učita proizvoljne foldere.
Dakle, kreirajmo potrebne datoteke i foldere da bismo učitali "/tmp":
Sada, kao što je naznačeno u prethodnom eksploitu, kreirajte zlonamernu biblioteku unutar /tmp
.
I na kraju, učitajte putanju i proverite odakle se binarna datoteka učitava biblioteka:
Kao što možete videti, imajući sudo privilegije nad ldconfig
-om, možete iskoristiti istu ranjivost.
Nisam pronašao pouzdan način za iskorišćavanje ove ranjivosti ako je ldconfig
konfigurisan sa suid bitom. Pojavljuje se sledeća greška: /sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~: Permission denied
Reference
Dab mašina na HTB-u
Last updated