Tcache Bin Attack
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Ekspert (ARTE) Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Ekspert (GRTE)
Vir meer inligting oor wat 'n Tcache bin is, kyk na hierdie bladsy:
Bins & Memory AllocationsEerstens, let daarop dat die Tcache in Glibc weergawe 2.26 bekendgestel is.
Die Tcache aanval (ook bekend as Tcache vergiftiging) wat in die guyinatuxido bladsy voorgestel is, is baie soortgelyk aan die vinnige bin aanval waar die doel is om die wysiger na die volgende stuk in die bin binne 'n vrygestelde stuk na 'n arbitrêre adres te oorskryf sodat dit later moontlik is om daardie spesifieke adres toe te ken en moontlik wysigers te oorskryf.
Tans, as jy die genoemde kode uitvoer, sal jy die fout kry: malloc(): unaligned tcache chunk detected
. Dit is dus nodig om as adres in die nuwe wysiger 'n uitgelijnde adres te skryf (of die binêre genoeg keer uit te voer sodat die geskryfde adres werklik uitgelijnd is).
Gewoonlik is dit moontlik om aan die begin van die heap 'n stuk te vind wat die aantal stukke per indeks binne die tcache en die adres na die hoofd stuk van elke tcache indeks bevat. As dit om een of ander rede moontlik is om hierdie inligting te wysig, sal dit moontlik wees om die hoofd stuk van 'n indeks na 'n gewenste adres te laat wys (soos __malloc_hook
) om dan 'n stuk van die grootte van die indeks toe te ken en die inhoud van __malloc_hook
in hierdie geval te oorskryf.
Libc inligting lek: Dit is moontlik om die tcaches te vul, 'n stuk in die ongesorteerde lys toe te voeg, die tcache leeg te maak en die stuk van die ongesorteerde bin weer toe te ken deur slegs die eerste 8B te oorskryf, terwyl die tweede adres na libc van die stuk intakt gelaat word sodat ons dit kan lees.
Tcache aanval: Die binêre is kwesbaar vir 'n 1B heap oorgang. Dit sal misbruik word om die grootte kop van 'n toegekenne stuk groter te maak. Dan sal hierdie stuk vrygestel word, wat dit by die tcache van stukke van die vals grootte voeg. Dan sal ons 'n stuk met die vals grootte toeken, en die vorige stuk sal teruggegee word met die wete dat hierdie stuk werklik kleiner was en dit bied die geleentheid om die volgende stuk in geheue te oorskryf.
Ons sal dit misbruik om die FD wysiger van die volgende stuk te oorskryf om na malloc_hook
te wys, sodat dit moontlik is om 2 wysigers toe te ken: eerstens die wettige wysiger wat ons pas gewysig het, en dan sal die tweede toekenning 'n stuk in malloc_hook
teruggee wat misbruik kan word om 'n one gadget te skryf.
Libc inligting lek: Daar is 'n gebruik na vry en 'n dubbele vry. In hierdie skrywe het die outeur 'n adres van libc gelek deur die adres van 'n stuk wat in 'n klein bin geplaas is te lees (soos om dit van die ongesorteerde bin te lek, maar van die klein een)
Tcache aanval: 'n Tcache word uitgevoer deur 'n dubbele vry. Dieselfde stuk word twee keer vrygestel, sodat binne die Tcache die stuk na homself sal wys. Dan word dit toegeken, sy FD wysiger word gewysig om na die vry haak te wys en dan word dit weer toegeken sodat die volgende stuk in die lys in die vry haak gaan wees. Dan word dit ook toegeken en dit is moontlik om die adres van system
hier te skryf sodat wanneer 'n malloc wat "/bin/sh"
bevat vrygestel word, ons 'n shell kry.
Die hoof kwesbaarheid hier is die vermoë om vry
enige adres in die heap aan te dui deur sy offset
Tcache indekse aanval: Dit is moontlik om 'n stuk van 'n grootte toe te ken en vry te stel wat, wanneer dit binne die tcache stuk (die stuk met die inligting van die tcache bins) gestoor word, 'n adres met die waarde 0x100 sal genereer. Dit is omdat die tcache die aantal stukke in elke bin in verskillende bytes stoor, daarom genereer een stuk in een spesifieke indeks die waarde 0x100.
Dan lyk hierdie waarde soos daar 'n stuk van grootte 0x100 is. Dit maak dit moontlik om dit te misbruik deur hierdie adres te vry
. Dit sal daardie adres by die indeks van stukke van grootte 0x100 in die tcache voeg.
Dan, toeken 'n stuk van grootte 0x100, die vorige adres sal as 'n stuk teruggegee word, wat dit moontlik maak om ander tcache indekse te oorskryf. Byvoorbeeld om die adres van malloc haak in een van hulle te plaas en 'n stuk van die grootte van daardie indeks toe te ken sal 'n stuk in calloc haak bied, wat toelaat om 'n one gadget te skryf om 'n shell te kry.
Dieselfde kwesbaarheid as voorheen met een ekstra beperking
Tcache indekse aanval: Soortgelyke aanval as die vorige, maar met minder stappe deur die stuk wat die tcache inligting bevat vry te stel sodat sy adres by die tcache indeks van sy grootte gevoeg word sodat dit moontlik is om daardie grootte toe te ken en die tcache stuk inligting as 'n stuk te kry, wat dit moontlik maak om die vry haak as die adres van een indeks toe te voeg, dit toe te ken, en 'n one gadget daarop te skryf.
Skryf Na Vry om 'n nommer by die fd
wysiger te voeg.
'n Baie van heap feng-shui is nodig in hierdie uitdaging. Die skrywe wys hoe beheer oor die hoofd van die Tcache vrylys baie handig is.
Glibc lek deur stdout
(FSOP).
Tcache vergiftiging om 'n arbitrêre skryf primitief te verkry.
Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Ekspert (ARTE) Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Ekspert (GRTE)