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 vinnige bin is, kyk na hierdie bladsy:
Bins & Memory AllocationsOmdat die vinnige bin 'n enkelgelinkte lys is, is daar baie minder beskerming as in ander binne en net die wysiging van 'n adres in 'n vrygemaakte vinnige bin-stuk is genoeg om later 'n stuk in enige geheue-adres te allokeer.
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:
Indien dit moontlik is om die waarde van die globale veranderlike global_max_fast
met 'n groot getal te oorskryf, maak dit dit moontlik om vinnige bin stukke van groter groottes te genereer, wat moontlik kan wees om vinnige bin aanvalle uit te voer in scenario's waar dit voorheen nie moontlik was nie. Hierdie situasie is nuttig in die konteks van groot bin aanval en ongesorteerde bin aanval.
Dit is moontlik om stukke toe te ken, hulle vry te stel, hul inhoud te lees en hulle te vul (met 'n oorvloei kwesbaarheid).
Konsolideer stuk vir inligtingslek: Die tegniek is basies om die oorvloei te misbruik om 'n vals prev_size
te skep sodat een vorige stuk binne 'n groter een geplaas word, sodat wanneer die groter een wat 'n ander stuk bevat, toegeken word, dit moontlik is om sy data af te druk en 'n adres na libc (main_arena+88
) te lek.
Oorskryf malloc haak: Hiervoor, en deur die vorige oorvleuelende situasie te misbruik, was dit moontlik om 2 stukke te hê wat na dieselfde geheue verwys het. Daarom, deur hulle albei vry te stel (deur nog 'n stuk tussenin vry te stel om beskermings te vermy), was dit moontlik om dieselfde stuk in die vinnige bin 2 keer te hê. Daarna was dit moontlik om dit weer toe te ken, die adres na die volgende stuk oor te skryf om 'n bietjie voor __malloc_hook
te wys (sodat dit na 'n heelgetal wys wat malloc dink is 'n vry grootte - nog 'n omweg), dit weer toe te ken en dan 'n ander stuk toe te ken wat 'n adres na malloc haak ontvang.
Uiteindelik is 'n eenhulpmiddel daar geskryf.
Daar is 'n geheue oorvloei en gebruik na vry en dubbel vry omdat wanneer 'n stuk vrygestel word, dit moontlik is om die aanwysers her te gebruik en weer vry te stel
Libc inligtingslek: Vry net 'n paar stukke en hulle sal 'n aanwyser na 'n deel van die hoofarena-plek kry. Aangesien jy vrygestelde aanwysers kan hergebruik, lees net hierdie adres.
Vinnige bin aanval: Al die aanwysers na die toekennings word binne 'n reeks gestoor, sodat ons 'n paar vinnige bin stukke kan vry en in die laaste een die adres kan oorskryf om 'n bietjie voor hierdie reeks van aanwysers te wys. Toe, ken 'n paar stukke toe met dieselfde grootte en ons sal eers die regte een kry en dan die vals een wat die reeks van aanwysers bevat. Ons kan nou hierdie toekenningsaanwysers oorskryf om die GOT-adres van free
te maak wat na system
wys en dan "/bin/sh"
in stuk 1 skryf om dan free(chunk1)
te roep wat in plaas daarvan system("/bin/sh")
sal uitvoer.
'n Ander voorbeeld van die misbruik van 'n een byte oorvloei om stukke in die ongesorteerde bin te konsolideer en 'n libc inligtingslek te kry en dan 'n vinnige bin aanval uit te voer om malloc haak met 'n eenhulpmiddeladres oor te skryf
Na 'n inligtingslek wat die ongesorteerde bin met 'n UAF misbruik om 'n libc-adres en 'n PIE-adres te lek, het die uitbuiting van hierdie CTF 'n vinnige bin aanval gebruik om 'n stuk toe te ken op 'n plek waar die aanwysers na beheerde stukke geleë was sodat dit moontlik was om sekere aanwysers oor te skryf om 'n eenhulpmiddel in die GOT te skryf
Jy kan 'n Vinnige Bin aanval vind wat misbruik word deur 'n ongesorteerde bin aanval:
Let daarop dat dit algemeen is voordat vinnige bin aanvalle uitgevoer word om die vrylys te misbruik om libc/geheue-adresse te lek (indien nodig).
Ons kan slegs stukke van groottes groter as 0x100
toeken.
Oorskryf global_max_fast
deur 'n Ongesorteerde Bin aanval te gebruik (werk 1/16 keer as gevolg van ASLR, omdat ons 12 bietjies moet wysig, maar ons moet 16 bietjies wysig).
Vinnige Bin aanval om die globale reeks van stukke te wysig. Dit gee 'n arbitrêre lees/skryf-beginsel, wat dit moontlik maak om die GOT te wysig en sommige funksies te laat wys na system
.
Leer & oefen AWS Hack: HackTricks Opleiding AWS Red Team Expert (ARTE) Leer & oefen GCP Hack: HackTricks Opleiding GCP Red Team Expert (GRTE)