Fast Bin Attack
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)
Za više informacija o tome šta je fast bin, pogledajte ovu stranicu:
Bins & Memory AllocationsPošto je fast bin jednostruko povezani spisak, postoji mnogo manje zaštita nego u drugim binovima i samo modifikacija adrese u oslobođenom fast bin delu je dovoljna da se kasnije alocira deo na bilo kojoj memorijskoj adresi.
Kao rezime:
Možete pronaći potpuni primer u veoma dobro objašnjenom kodu sa https://guyinatuxedo.github.io/28-fastbin_attack/explanation_fastbinAttack/index.html:
Ako je moguće prepisati vrednost globalne promenljive global_max_fast
velikim brojem, to omogućava generisanje fast bin chunk-ova većih veličina, potencijalno omogućavajući izvođenje fast bin napada u scenarijima gde to prethodno nije bilo moguće. Ova situacija je korisna u kontekstu napada na velike binove i napada na neusortirane binove
Moguće je alocirati chunk-ove, osloboditi ih, pročitati njihov sadržaj i popuniti ih (sa ranjivošću prelivanja).
Konsolidacija chunk-a za infoleak: Tehnika se u suštini sastoji u zloupotrebi prelivanja kako bi se kreirao lažni prev_size
, tako da jedan prethodni chunk bude smešten unutar većeg, tako da kada se alocira veći koji sadrži drugi chunk, moguće je odštampati njegove podatke i procuriti adresu do libc (main_arena+88
).
Prepisivanje malloc hook-a: Za ovo, i zloupotrebljavajući prethodnu preklapajuću situaciju, bilo je moguće imati 2 chunk-a koja su ukazivala na istu memoriju. Stoga, oslobađajući ih oboje (oslobađajući drugi chunk između da izbegnemo zaštite) bilo je moguće imati isti chunk u fast bin-u 2 puta. Zatim, bilo je moguće ponovo alocirati, prepisati adresu sledećeg chunk-a da ukazuje malo pre __malloc_hook
(tako da ukazuje na ceo broj za koji malloc misli da je slobodna veličina - još jedan zaobilaženje), ponovo ga alocirati i zatim alocirati drugi chunk koji će primiti adresu do malloc hook-ova.
Na kraju, jedan gadget je napisan unutra.
Postoji heap prelivanje i korišćenje nakon oslobađanja i dvostruko oslobađanje jer kada se chunk oslobodi, moguće je ponovo koristiti i ponovo osloboditi pokazivače.
Libc info leak: Samo oslobodite neke chunk-ove i dobićete pokazivač na deo lokacije glavne arene. Kako možete ponovo koristiti oslobođene pokazivače, samo pročitajte ovu adresu.
Fast bin napad: Svi pokazivači na alokacije su smešteni unutar niza, tako da možemo osloboditi nekoliko fast bin chunk-ova i u poslednjem prepisati adresu da ukazuje malo pre ovog niza pokazivača. Zatim, alociramo nekoliko chunk-ova iste veličine i prvo ćemo dobiti legitiman, a zatim lažni koji sadrži niz pokazivača. Sada možemo prepisati ove alokacione pokazivače da učinimo GOT adresu free
da ukazuje na system
i zatim napisati "/bin/sh"
u chunk 1 da bismo zatim pozvali free(chunk1)
koji će umesto toga izvršiti system("/bin/sh")
.
Još jedan primer zloupotrebe prelivanja jednog bajta za konsolidaciju chunk-ova u neusortiranom binu i dobijanje libc infoleak-a, a zatim izvođenje fast bin napada za prepisivanje malloc hook-a sa adresom jednog gadget-a.
Nakon infoleak-a zloupotrebljavajući neusortirani bin sa UAF da procuri libc adresu i PIE adresu, eksploatacija ovog CTF-a koristila je fast bin napad da alocira chunk na mestu gde su se nalazili pokazivači do kontrolisanih chunk-ova, tako da je bilo moguće prepisati određene pokazivače da napišu jedan gadget u GOT.
Možete pronaći Fast Bin napad zloupotrebljen kroz neusortirani bin napad:
Imajte na umu da je uobičajeno pre izvođenja fast bin napada zloupotrebljavati slobodne liste da procurite libc/heap adrese (kada je potrebno).
Možemo alocirati samo chunk-ove veličine veće od 0x100
.
Prepišite global_max_fast
koristeći neusortirani bin napad (radi 1/16 puta zbog ASLR, jer treba da modifikujemo 12 bita, ali moramo modifikovati 16 bita).
Fast Bin napad za modifikaciju globalnog niza chunk-ova. Ovo daje proizvoljnu read/write primitivu, koja omogućava modifikaciju GOT-a i postavljanje neke funkcije da ukazuje na system
.
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)