Fast Bin Attack
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)
Vir meer inligting oor wat 'n fast bin is, kyk na hierdie bladsy:
Bins & Memory AllocationsOmdat die fast bin 'n enkel-gelinkte lys is, is daar baie minder beskermings as in ander bins en net om 'n adres in 'n vrygestelde fast bin stuk te verander is genoeg om later 'n stuk in enige geheue adres te kan toewys.
As opsomming:
Jy kan 'n volledige voorbeeld vind in 'n baie goed verduidelikte kode van https://guyinatuxedo.github.io/28-fastbin_attack/explanation_fastbinAttack/index.html:
As dit moontlik is om die waarde van die globale veranderlike global_max_fast
met 'n groot getal te oorskry, laat dit toe om vinnige bin stukke van groter groottes te genereer, wat moontlik vinnige bin aanvalle in scenario's toelaat waar dit voorheen nie moontlik was nie. Hierdie situasie is nuttig in die konteks van large bin attack en unsorted bin attack
Dit is moontlik om stukke toe te ken, hulle vry te stel, hul inhoud te lees en hulle te vul (met 'n oorgang kwesbaarheid).
Konsolideer stuk vir infoleak: Die tegniek is basies om die oorgang te misbruik om 'n vals prev_size
te skep sodat een vorige stuk in 'n groter een geplaas word, sodat wanneer die groter een wat 'n ander stuk bevat, toegeken word, dit moontlik is om sy data te druk en 'n adres na libc (main_arena+88
) te lek.
Oorskry malloc haak: Hiervoor, en deur die vorige oorvleueling situasie te misbruik, was dit moontlik om 2 stukke te hê wat na dieselfde geheue gewys het. Daarom, deur hulle albei vry te stel (om 'n ander stuk tussenin vry te stel om beskermings te vermy) was dit moontlik om dieselfde stuk in die vinnige bin 2 keer te hê. Toe was dit moontlik om dit weer toe te ken, die adres na die volgende stuk te oorskry om 'n bietjie voor __malloc_hook
te wys (sodat dit na 'n heelgetal wys wat malloc dink is 'n vrye grootte - 'n ander omseiling), dit weer toe te ken en dan 'n ander stuk toe te ken wat 'n adres na malloc haak sal ontvang.
Uiteindelik is 'n one gadget daar geskryf.
Daar is 'n heap oorgang en gebruik na vry en dubbele vry omdat wanneer 'n stuk vrygestel word, dit moontlik is om die punters te hergebruik en weer vry te stel.
Libc info leak: Vry net 'n paar stukke en hulle sal 'n punter na 'n deel van die hoof arena ligging kry. Aangesien jy vrygestelde punters kan hergebruik, lees net hierdie adres.
Fast bin aanval: Al die punters na die toekennings word binne 'n array gestoor, so ons kan 'n paar vinnige bin stukke vrystel en in die laaste een die adres oorskry om 'n bietjie voor hierdie array van punters te wys. Dan, ken 'n paar stukke met dieselfde grootte toe en ons sal eers die wettige een kry en dan die vals een wat die array van punters bevat. Ons kan nou hierdie toekenning punters oorskry om die GOT adres van free
na system
te laat wys en dan "/bin/sh"
in stuk 1 te skryf om dan free(chunk1)
aan te roep wat in plaas daarvan system("/bin/sh")
sal uitvoer.
Nog 'n voorbeeld van die misbruik van 'n een byte oorgang om stukke in die onsortering bin te konsolideer en 'n libc infoleak te kry en dan 'n vinnige bin aanval uit te voer om malloc haak met 'n one gadget adres te oorskry.
Na 'n infoleak wat die onsortering bin misbruik met 'n UAF om 'n libc adres en 'n PIE adres te lek, het die uitbuiting van hierdie CTF 'n vinnige bin aanval gebruik om 'n stuk in 'n plek toe te ken waar die punters na beheerde stukke geleë was, sodat dit moontlik was om sekere punters te oorskry om 'n one gadget in die GOT te skryf.
Jy kan 'n Fast Bin aanval vind wat deur 'n onsortering bin aanval misbruik word:
Let daarop dat dit algemeen is om voor vinnige bin aanvalle die vry-lis te misbruik om libc/heap adresse te lek (wanneer nodig).
Ons kan slegs stukke van grootte groter as 0x100
toeken.
Oorskry global_max_fast
met 'n Unsorted Bin aanval (werk 1/16 keer weens ASLR, omdat ons 12 bits moet verander, maar ons moet 16 bits verander).
Vinnige Bin aanval om 'n globale array van stukke te verander. Dit bied 'n arbitrêre lees/schrijf primitief, wat toelaat om die GOT te verander en sommige funksies na system
te laat wys.
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)