Tcache Bin Attack
Jifunze na zoezi la Kuvamia AWS:Mafunzo ya HackTricks ya Mtaalam wa Timu Nyekundu ya AWS (ARTE)
Jifunze na zoezi la Kuvamia GCP:
Mafunzo ya HackTricks ya Mtaalam wa Timu Nyekundu ya GCP (GRTE)
Taarifa Msingi
Kwa habari zaidi kuhusu ni nini Tcache bin angalia ukurasa huu:
Bins & Memory AllocationsKwanza kabisa, kumbuka kuwa Tcache ililetwa katika toleo la Glibc 2.26.
Shambulio la Tcache (pia inajulikana kama Tcache poisoning) lililopendekezwa katika ukurasa wa guyinatuxido ni sawa sana na shambulio la fast bin ambapo lengo ni kubadilisha pointer kwa kipande kinachofuata kwenye bin ndani ya kipande kilichofutwa kwa anwani isiyojulikana ili baadaye iwezekane kuweka anwani hiyo maalum na labda kubadilisha pointes.
Hata hivyo, siku hizi, ukitekeleza nambari iliyotajwa utapata kosa: malloc(): unaligned tcache chunk detected
. Kwa hivyo, ni muhimu kuandika anwani iliyolingana katika pointer mpya (au kutekeleza mara za kutosha nambari ili anwani iliyoandikwa iwe kweli imeunganishwa).
Shambulio la indeksi za Tcache
Kawaida inawezekana kupata mwanzoni mwa rundo kipande kinachohifadhi idadi ya vipande kwa kila indeksi ndani ya tcache na anwani ya kipande cha kichwa cha kila indeksi ya tcache. Ikiwa kwa sababu fulani inawezekana kubadilisha habari hii, ingewezekana kuweka kipande cha kichwa cha indeksi fulani kiashiria anwani inayotakiwa (kama vile __malloc_hook
) kisha baadaye kuweka kipande cha ukubwa wa indeksi na kubadilisha maudhui ya __malloc_hook
katika kesi hii.
Mifano
Uvuvi wa habari ya Libc: Inawezekana kujaza tcaches, kuongeza kipande kwenye orodha isiyopangwa, kufuta tcache na kuweka upya kipande kutoka kwenye rundo lisilopangwa ikibadilisha tu 8B za kwanza, ikiiacha anwani ya pili ya libc kutoka kwa kipande ikiwa bado tunaweza kuisoma.
Shambulio la Tcache: Programu ya binary ina udhaifu wa kipekee wa rundo la 1B. Hii itatumika kubadilisha kichwa cha ukubwa cha kipande kilichopewa kufanya iwe kubwa zaidi. Kisha, kipande hiki kitafutwa, kikiwekwa kwenye tcache ya vipande vya ukubwa wa bandia. Kisha, tutapata kipande cha ukubwa wa bandia, na kipande kilichopita kitarejeshwa tukijua kuwa kipande hiki kilikuwa kidogo na hii inatoa fursa ya kubadilisha kipande kinachofuata kwenye kumbukumbu. Tutatumia hii kubadilisha pointer ya FD ya kipande kinachofuata ili iashirie
malloc_hook
, kisha ni rahisi kuweka alama 2: kwanza pointer halali tuliyobadilisha, na kisha alokesheni ya pili itarejesha kipande kwenyemalloc_hook
ambayo inawezekana kutumia kuandika gadget moja.Uvuvi wa habari ya Libc: Kuna matumizi baada ya kufuta na kufuta mara mbili. Katika mwongozo huu mwandishi alivuja anwani ya libc kwa kusoma anwani ya kipande kilichowekwa kwenye rundo dogo (kama kuvuja kutoka kwa rundo lisilopangwa lakini kutoka kwa rundo dogo)
Shambulio la Tcache: Tcache inatekelezwa kupitia kufuta mara mbili. Kipande kimoja kinafutwa mara mbili, kwa hivyo ndani ya Tcache kipande kitaiashiria yenyewe. Kisha, kinalokeshwa, pointer yake ya FD inabadilishwa ili iashirie free hook na kisha inalokeshwa tena ili kipande kinachofuata kwenye orodha iwe kwenye free hook. Kisha, hii pia inalokeshwa na inawezekana kuandika anwani ya
system
hapa kwa hivyo wakati malloc inayohusisha"/bin/sh"
inapofutwa tunapata shell.Udhaifu mkuu hapa ni uwezo wa
kufuta
anwani yoyote kwenye rundo kwa kuonyesha kisawe chakeShambulio la indeksi za Tcache: Inawezekana kutekeleza na kufuta kipande cha ukubwa ambao unapohifadhiwa ndani ya kipande cha tcache (kipande chenye habari ya mabano ya tcache) itazalisha anwani yenye thamani ya 0x100. Hii ni kwa sababu tcache inahifadhi idadi ya vipande kwa kila bin katika byte tofauti, kwa hivyo kipande kimoja katika indeksi fulani maalum inazalisha thamani ya 0x100.
Kisha, thamani hii inaonekana kama kuna kipande cha ukubwa wa 0x100. Kuruhusu kuitumia kwa kufuta anwani hii. Hii itaongeza anwani hiyo kwenye indeksi ya vipande vya ukubwa wa 0x100 katika tcache**.
Kisha, kutekeleza kipande cha ukubwa wa 0x100, anwani ya awali itarejeshwa kama kipande, kuruhusu kubadilisha indeksi zingine za tcache. Kwa mfano kuweka anwani ya kitanzi cha malloc katika moja yao na kutekeleza kipande cha ukubwa wa indeksi hiyo kutatoa kipande katika kitanzi cha calloc, ambacho kinaruhusu kuandika kifaa kimoja kupata ganda.
Udhaifu sawa na hapo awali na kizuizi kimoja zaidi
Shambulio la indeksi za Tcache: Shambulio sawa na lile lililopita lakini kwa hatua chache kwa kufuta kipande kinachohifadhi habari ya tcache ili anwani yake iweze kuongezwa kwenye indeksi ya tcache ya ukubwa wake ili iwezekane kutekeleza ukubwa huo na kupata habari ya kipande cha tcache kama kipande, ambacho kuruhusu kuongeza kitanzi cha bure kama anwani ya indeksi moja, kutekeleza, na kuandika kifaa kimoja juu yake.
Andika Baada ya Kufuta ili kuongeza nambari kwa pointer ya
fd
.Kuna heap feng-shui nyingi inahitajika katika changamoto hii. Mwongozo unaonyesha jinsi kudhibiti kichwa cha orodha ya bure ya Tcache ni muhimu sana.
Uvuvi wa Glibc kupitia
stdout
(FSOP).Tcache poisoning kupata msingi wa kuandika wa kiholela.
Jiunge na 💬 kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @hacktricks_live.
Shiriki mbinu za udukuzi kwa kuwasilisha PRs kwenye HackTricks na HackTricks Cloud repos za github.
Last updated