Tcache Bin Attack
Last updated
Last updated
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)
Za više informacija o tome šta je Tcache bin, proverite ovu stranicu:
Bins & Memory AllocationsPrvo, imajte na umu da je Tcache uveden u Glibc verziji 2.26.
Tcache napad (poznat i kao Tcache trovanje) predložen na guyinatuxido stranici je veoma sličan napadu na brze binove gde je cilj prepisati pokazivač na sledeći deo u binu unutar oslobođenog dela na proizvoljnu adresu kako bi kasnije bilo moguće alokovati tu specifičnu adresu i potencijalno prepisati pokazivače.
Međutim, danas, ako pokrenete pomenuti kod dobićete grešku: malloc(): unaligned tcache chunk detected
. Dakle, potrebno je napisati kao adresu u novom pokazivaču usklađenu adresu (ili izvršiti dovoljno puta binarni kod tako da je napisana adresa zapravo usklađena).
Obično je moguće pronaći na početku heap-a deo koji sadrži broj delova po indeksu unutar tcache-a i adresu do glavnog dela svakog tcache indeksa. Ako iz nekog razloga bude moguće izmeniti ove informacije, bilo bi moguće naterati glavni deo nekog indeksa da pokazuje na željenu adresu (kao što je __malloc_hook
) kako bi se zatim alokovao deo veličine indeksa i prepisali sadržaji __malloc_hook
u ovom slučaju.
Libc info leak: Moguće je napuniti tcache, dodati deo u nesortiranu listu, isprazniti tcache i ponovo alocirati deo iz nesortiranog bina samo prepisujući prvih 8B, ostavljajući drugom adresom do libc iz dela netaknutu kako bismo mogli da je pročitamo.
Tcache napad: Binarni kod je ranjiv na 1B heap overflow. Ovo će se iskoristiti za promenu header-a veličine alociranog dela čineći ga većim. Zatim, ovaj deo će biti oslobođen, dodajući ga u tcache delova lažne veličine. Zatim, alociraćemo deo sa lažnom veličinom, a prethodni deo će biti vraćen znajući da je ovaj deo zapravo bio manji i to nam daje priliku da prepišemo sledeći deo u memoriji.
Iskoristićemo ovo da prepišemo FD pokazivač sledećeg dela da pokazuje na malloc_hook
, tako da je moguće alocirati 2 pokazivača: prvo legitiman pokazivač koji smo upravo izmenili, a zatim će druga alokacija vratiti deo u malloc_hook
koji je moguće iskoristiti za pisanje one gadget.
Libc info leak: Postoji korišćenje nakon oslobađanja i dvostruko oslobađanje. U ovom izveštaju autor je otkrio adresu libc čitajući adresu dela postavljenog u mali bin (kao da je otkrio iz nesortiranog bina, ali iz malog).
Tcache napad: Tcache se vrši putem dvostrukog oslobađanja. Isti deo se oslobađa dva puta, tako da unutar Tcache-a deo pokazuje na sebe. Zatim, alocira se, njegov FD pokazivač se menja da pokazuje na free hook i zatim se ponovo alocira tako da će sledeći deo na listi biti u free hook-u. Zatim, ovo se takođe alocira i moguće je ovde napisati adresu system
tako da kada se oslobodi malloc koji sadrži "/bin/sh"
dobijamo shell.
Glavna ranjivost ovde je sposobnost da se free
bilo koja adresa u heap-u ukazivanjem na njen offset.
Napad na Tcache indekse: Moguće je alocirati i osloboditi deo veličine koja kada se čuva unutar tcache dela (deo sa informacijama o tcache binovima) generiše adresu sa vrednošću 0x100. Ovo je zato što tcache čuva broj delova u svakom binu u različitim bajtovima, stoga jedan deo u jednom specifičnom indeksu generiše vrednost 0x100.
Zatim, ova vrednost izgleda kao da postoji deo veličine 0x100. Omogućavajući da se iskoristi free
ova adresa. Ovo će dodati tu adresu u indeks delova veličine 0x100 u tcache.
Zatim, alokacija dela veličine 0x100, prethodna adresa će biti vraćena kao deo, omogućavajući prepisivanje drugih tcache indeksa. Na primer, stavljajući adresu malloc hook u jedan od njih i alocirajući deo veličine tog indeksa dobićemo deo u calloc hook-u, što omogućava pisanje one gadget za dobijanje shell-a.
Ista ranjivost kao pre sa jednom dodatnom restrikcijom.
Napad na Tcache indekse: Sličan napad kao prethodni, ali koristeći manje koraka oslobađanjem dela koji sadrži tcache informacije tako da se njegova adresa dodaje u tcache indeks njegove veličine, tako da je moguće alocirati tu veličinu i dobiti tcache informacije kao deo, što omogućava dodavanje free hook kao adresu jednog indeksa, alocirati ga i napisati one gadget na njemu.
Write After Free da se doda broj u fd
pokazivač.
Potrebno je puno heap feng-shui u ovom izazovu. Izveštaj pokazuje kako je kontrola glave Tcache free-liste veoma korisna.
Glibc leak kroz stdout
(FSOP).
Tcache trovanje za dobijanje proizvoljne write primitive.
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)