Tcache Bin Attack
Reading time: 6 minutes
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Basic Information
Vir meer inligting oor wat 'n Tcache bin is, kyk na hierdie bladsy:
Eerstens, 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 pointer na die volgende chunk in die bin binne 'n vrygestelde chunk na 'n arbitrêre adres te oorskryf sodat dit later moontlik is om daardie spesifieke adres toe te ken en moontlik pointers te oorskryf.
Tans, as jy die genoemde kode uitvoer, sal jy die fout kry: malloc(): unaligned tcache chunk detected
. Dit is dus nodig om 'n uitgelijnde adres as adres in die nuwe pointer te skryf (of genoeg keer die binêre uit te voer sodat die geskryfde adres werklik uitgelijnd is).
Tcache indexes aanval
Gewoonlik is dit moontlik om aan die begin van die heap 'n chunk te vind wat die hoeveelheid chunks per indeks binne die tcache en die adres na die hoofd chunk 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 chunk van 'n indeks na 'n gewenste adres te laat wys (soos __malloc_hook
) om dan 'n chunk van die grootte van die indeks toe te ken en die inhoud van __malloc_hook
in hierdie geval te oorskryf.
Examples
- CTF https://guyinatuxedo.github.io/29-tcache/dcquals19_babyheap/index.html
- Libc inligting lek: Dit is moontlik om die tcaches te vul, 'n chunk in die onsorteerde lys by te voeg, die tcache leeg te maak en die chunk van die onsorteerde bin weer toe te ken deur slegs die eerste 8B te oorskryf, terwyl die tweede adres na libc van die chunk 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 chunk te verander om dit groter te maak. Dan sal hierdie chunk vrygestel word, wat dit by die tcache van chunks van die vals grootte voeg. Dan sal ons 'n chunk met die vals grootte toeken, en die vorige chunk sal teruggegee word met die kennis dat hierdie chunk werklik kleiner was en dit bied die geleentheid om die volgende chunk in geheue te oorskryf.
Ons sal dit misbruik om die FD pointer van die volgende chunk te oorskryf om namalloc_hook
te wys, sodat dit moontlik is om 2 pointers toe te ken: eerstens die wettige pointer wat ons pas gewysig het, en dan sal die tweede toekenning 'n chunk inmalloc_hook
teruggee wat misbruik kan word om 'n one gadget te skryf. - CTF https://guyinatuxedo.github.io/29-tcache/plaid19_cpp/index.html
- 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 chunk wat in 'n klein bin geplaas is te lees (soos om dit van die onsorteerde bin te lek, maar van die klein een)
- Tcache aanval: 'n Tcache word uitgevoer deur middel van 'n dubbele vry. Dieselfde chunk word twee keer vrygestel, sodat die chunk binne die Tcache na homself sal wys. Dan word dit toegeken, sy FD pointer word gewysig om na die free hook te wys en dan word dit weer toegeken sodat die volgende chunk in die lys in die free hook 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. - CTF https://guyinatuxedo.github.io/44-more_tcache/csaw19_popping_caps0/index.html
- Die hoof kwesbaarheid hier is die vermoë om enige adres in die heap te
free
deur sy offset aan te dui. - Tcache indexes aanval: Dit is moontlik om 'n chunk van 'n grootte toe te ken en vry te stel wat, wanneer dit binne die tcache chunk (die chunk met die inligting van die tcache bins) gestoor word, 'n adres met die waarde 0x100 sal genereer. Dit is omdat die tcache die hoeveelheid chunks in elke bin in verskillende bytes stoor, daarom genereer een chunk in een spesifieke indeks die waarde 0x100.
- Dan lyk hierdie waarde soos daar is 'n chunk van grootte 0x100. Dit maak dit moontlik om dit te misbruik deur hierdie adres te
free
. Dit sal daardie adres by die indeks van chunks van grootte 0x100 in die tcache voeg. - Dan, toekennend 'n chunk van grootte 0x100, sal die vorige adres as 'n chunk teruggegee word, wat dit moontlik maak om ander tcache indekse te oorskryf.
Byvoorbeeld, om die adres van malloc hook in een van hulle te plaas en 'n chunk van die grootte van daardie indeks toe te ken, sal 'n chunk in calloc hook toelaat, wat die skryf van 'n one gadget moontlik maak om 'n shell te kry. - CTF https://guyinatuxedo.github.io/44-more_tcache/csaw19_popping_caps1/index.html
- Dieselfde kwesbaarheid as voorheen met een ekstra beperking.
- Tcache indexes aanval: Soortgelyke aanval as die vorige, maar met minder stappe deur die chunk 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 chunk inligting as 'n chunk te kry, wat dit moontlik maak om free hook as die adres van een indeks toe te voeg, dit toe te ken, en 'n one gadget daarop te skryf.
- Math Door. HTB Cyber Apocalypse CTF 2023
- Write After Free om 'n nommer by die
fd
pointer 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.
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.