7.6 KiB
Tcache Bin Aanval
Leer AWS hak vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy wil sien dat jou maatskappy geadverteer word in HackTricks of HackTricks aflaai in PDF-formaat Kyk na die INSKRYWINGSPLANNE!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS Familie, ons versameling van eksklusiewe NFTs
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel jou haktruuks deur PRs in te dien by die HackTricks en HackTricks Cloud github repos.
Basiese Inligting
Vir meer inligting oor wat 'n Tcache-bin is, kyk na hierdie bladsy:
{% content-ref url="bins-and-memory-allocations.md" %} bins-and-memory-allocations.md {% endcontent-ref %}
Eerstens, let daarop dat die Tcache in Glibc weergawe 2.26 ingevoer is.
Die Tcache-aanval (ook bekend as Tcache-vergiftiging) voorgestel in die guyinatuxido-bladsy is baie soortgelyk aan die vinnige bin-aanval waar die doel is om die wyser na die volgende blok in die bin binne 'n vrygemaakte blok te oorskryf na 'n arbitrêre adres sodat dit later moontlik is om daardie spesifieke adres toe te ken en moontlik wysers te oorskryf.
Tans, as jy die genoemde kode hardloop, sal jy die fout kry: malloc(): unaligned tcache chunk detected
. Dus, dit is nodig om 'n uitgelyste adres in die nuwe wyser 'n uitgelyste adres te skryf (of genoeg keer die binêre uit te voer sodat die geskrewe adres eintlik uitgelyst is).
Tcache indeksaanval
Gewoonlik is dit moontlik om aan die begin van die heap 'n blok te vind wat die hoeveelheid blokke per indeks binne die tcache bevat en die adres na die hoofblok van elke tcache-indeks. As dit om een of ander rede moontlik is om hierdie inligting te wysig, sou dit moontlik wees om die hoofblok van 'n sekere indeks na 'n gewenste adres te laat wys (soos __malloc_hook
) sodat 'n blok van die grootte van die indeks toegewys kan word en die inhoud van __malloc_hook
in hierdie geval oorskryf kan word.
Voorbeelde
- CTF https://guyinatuxedo.github.io/29-tcache/dcquals19_babyheap/index.html
- Libc inligtingslek: Dit is moontlik om die tcaches te vul, 'n blok by die ongesorteerde lys te voeg, die tcache leeg te maak en die blok van die ongesorteerde bin te herallokeer deur slegs die eerste 8B te oorskryf, waar die tweede adres na libc van die blok ongeskonde bly sodat ons dit kan lees.
- Tcache-aanval: Die binêre is kwesbaar vir 'n 1B-heap-oorvloei. Dit sal misbruik word om die grootte-kop van 'n toegewysde blok te verander om dit groter te maak. Dan sal hierdie blok vrygemaak word, dit by die tcache van blokke van die valse grootte voeg. Dan sal ons 'n blok met die vervalste grootte toewys, en die vorige blok sal teruggegee word met die wete dat hierdie blok eintlik kleiner was en dit bied die geleentheid om die volgende blok in die geheue te oorskryf.
Ons sal dit misbruik om die FD-wyser van die volgende blok te oorskryf om te wys namalloc_hook
, sodat dit moontlik is om 2 wysers toe te ken: eerste die regte wyser wat ons net gewysig het, en dan sal die tweede toekenning 'n blok inmalloc_hook
teruggee wat dit moontlik is om te misbruik om 'n een gadget te skryf. - CTF https://guyinatuxedo.github.io/29-tcache/plaid19_cpp/index.html
- Libc inligtingslek: Daar is 'n gebruik na vry en 'n dubbele vry. In hierdie skrywe het die skrywer 'n adres van libc gelekte deur die adres van 'n blok in 'n klein bin 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 blok word twee keer vrygemaak, sodat binne die Tcache die blok na homself sal wys. Dan word dit toegewys, sy FD-wyser word gewysig om te wys na die vry-waarde en dan word dit weer toegewys sodat die volgende blok in die lys in die vry-waarde sal wees. Dan word dit ook toegewys en dit is moontlik om die adres van
system
hier te skryf sodat wanneer 'n malloc wat"/bin/sh"
bevat, vrygemaak word, kry ons 'n skul. - CTF https://guyinatuxedo.github.io/44-more_tcache/csaw19_popping_caps0/index.html
- Die hoofkwesbaarheid hier is die vermoë om enige adres in die heap te
vry
deur sy offset aan te dui - Tcache-indeksaanvalle: Dit is moontlik om 'n blok van 'n grootte toe te ken en vry te maak wat wanneer dit binne die tcache-blok gestoor word (die blok met die inligting van die tcache-binne) 'n adres met die waarde 0x100 sal genereer. Dit is omdat die tcache die hoeveelheid blokke in elke bin in verskillende bytes stoor, daarom genereer een blok in een spesifieke indeks die waarde 0x100.
- Dan lyk hierdie waarde asof daar 'n blok 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 blokke van grootte 0x100 in die tcache voeg. - Dan, 'n blok van grootte 0x100 toewys, sal die vorige adres as 'n blok teruggee, 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 blok van die grootte van daardie indeks toe te ken, sal 'n blok in calloc hook gee, wat dit moontlik maak om 'n een gadget te skryf om 'n s-skulp te kry. - CTF https://guyinatuxedo.github.io/44-more_tcache/csaw19_popping_caps1/index.html
- Dieselfde kwesbaarheid as voorheen met een ekstra beperking
- Tcache-indeksaanvalle: Soortgelyke aanval as die vorige een maar met minder stappe deur die blok wat die tcache-inligting bevat vry te maak 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-blok inligting as 'n blok te kry, wat dit moontlik maak om die vry-waarde as die adres van een indeks by te voeg, dit toe te ken, en 'n een gadget daarop te skryf.
- Math Door. HTB Cyber Apocalypse CTF 2023
- Skryf Na Vry om 'n nommer by die
fd
-wyser te voeg. - Baie heap feng-shui is nodig in hierdie uitdaging. Die skrywe wys hoe die beheer van die kop van die Tcache vry-lys baie handig is.
- Glibc-lek deur
stdout
(FSOP). - Tcache-vergiftiging om 'n arbitrêre skryfprimitief te kry.
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel jou hacktruuks deur PR's in te dien by die HackTricks en HackTricks Cloud github repos.