Fast Bin Attack
Last updated
Last updated
Naučite i vežbajte hakovanje AWS-a:HackTricks Training AWS Red Team Expert (ARTE) Naučite i vežbajte hakovanje GCP-a: HackTricks Training GCP Red Team Expert (GRTE)
Za više informacija o tome šta je brza binarna provera posetite ovu stranicu:
Bins & Memory AllocationsZbog toga što je brza binarna provera jednostruko povezana lista, postoji mnogo manje zaštite nego u drugim binovima i samo modifikovanje adrese u oslobođenom brzom binu isecku je dovoljno da biste mogli dodeliti kasnije isečak na bilo kojoj memorijskoj adresi.
Kao sažetak:
Možete pronaći potpuni primer u veoma dobro objašnjenom kodu na https://guyinatuxedo.github.io/28-fastbin_attack/explanation_fastbinAttack/index.html:
Ako je moguće prebrisati vrednost globalne promenljive global_max_fast
velikim brojem, to omogućava generisanje brzih bin chunk-ova većih veličina, potencijalno omogućavajući izvođenje brzih bin napada u scenarijima gde to ranije nije bilo moguće. Ova situacija je korisna u kontekstu napada velikim binom i napada nesortiranim binom.
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 uglavnom zloupotrebljava prelivanjem kako bi se stvorila lažna prev_size
, tako da se jedan prethodni chunk stavi unutar većeg, pa kada se alocira veći chunk koji sadrži još jedan chunk, moguće je ispisati njegove podatke i procuriti adresu do libc-a (main_arena+88
).
Prepisivanje malloc hook-a: Za ovo, i zloupotrebljavajući prethodnu situaciju preklapanja, bilo je moguće imati 2 chunk-a koji su pokazivali na istu memoriju. Stoga, oslobađajući ih oboje (oslobađajući još jedan chunk između da bi se izbegle zaštite), bilo je moguće imati isti chunk u brzom binu 2 puta. Zatim, bilo je moguće ponovo ga alocirati, prepisati adresu sledećeg chunk-a da pokazuje malo pre __malloc_hook
(tako da pokazuje na integer koji malloc smatra slobodnom veličinom - još jedan zaobilazak), ponovo ga alocirati, a zatim alocirati još jedan chunk koji će primiti adresu do malloc hook-ova.
Na kraju je jedan gadget upisan tamo.
Postoji prelivanje hipa i korišćenje nakon oslobađanja i duplo 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č do dela lokacije glavne arene. Kako možete ponovo koristiti oslobađene pokazivače, samo pročitajte ovu adresu.
Napad brzim binom: Svi pokazivači na alokacije čuvaju se unutar niza, pa možemo osloboditi par brzih bin chunk-ova i u poslednjem prepisati adresu da pokazuje malo pre ovog niza pokazivača. Zatim, alocirajte par chunk-ova iste veličine i prvo ćemo dobiti legitimni, a zatim lažni koji sadrži niz pokazivača. Sada možemo prepisati ove alokacijske pokazivače da bi adresa GOT-a free
pokazivala na system
, a zatim napisati "/bin/sh"
u chunk 1 da bismo zatim pozvali free(chunk1)
što će umesto toga izvršiti system("/bin/sh")
.
Još jedan primer zloupotrebe prelivanja jednim bajtom da se konsoliduju chunk-ovi u nesortirani bin i dobije libc infoleak, a zatim izvede napad brzim binom da se prepisivanjem malloc hook-a sa adresom jednog gadgeta
Nakon infoleaka zloupotrebom nesortiranog bina sa UAF-om da procuri adresa libc-a i adresa PIE-a, eksploatacija ovog CTF-a koristila je napad brzim binom da alocira chunk na mestu gde su se nalazili pokazivači ka kontrolisanim chunk-ovima tako da je bilo moguće prepisati određene pokazivače da bi se napisao jedan gadget u GOT-u
Možete pronaći napad brzim binom zloupotrebljen kroz napad nesortiranim binom:
Imajte na umu da je uobičajeno pre izvođenja napada brzim binom zloupotrebiti liste slobodnih chunk-ova da bi procurili libc/heap adrese (kada je potrebno).
Možemo alocirati samo chunk-ove veće od 0x100
.
Prepišite global_max_fast
koristeći napad nesortiranim binom (radi 1/16 puta zbog ASLR-a, jer moramo modifikovati 12 bitova, ali moramo modifikovati 16 bitova).
Napad brzim binom da se modifikuje globalni niz chunk-ova. Ovo daje proizvoljni read/write primitiv, što omogućava modifikaciju GOT-a i postavljanje neke funkcije da pokazuje na system
.
Naučite i vežbajte hakovanje AWS-a:HackTricks Training AWS Red Team Expert (ARTE) Naučite i vežbajte hakovanje GCP-a: HackTricks Training GCP Red Team Expert (GRTE)