Tcache Bin Attack
Last updated
Last updated
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Kwa maelezo zaidi kuhusu nini Tcache bin angalia ukurasa huu:
Bins & Memory AllocationsKwanza kabisa, kumbuka kwamba Tcache ilianzishwa katika toleo la Glibc 2.26.
Tcache attack (pia inajulikana kama Tcache poisoning) iliyopendekezwa katika ukurasa wa guyinatuxido ni sawa sana na shambulio la fast bin ambapo lengo ni kubadilisha kiashiria cha kipande kinachofuata katika bin ndani ya kipande kilichofutwa kwa anwani isiyo ya kawaida ili baadaye iwezekane kugawa anwani hiyo maalum na kwa uwezekano kubadilisha viashiria.
Hata hivyo, siku hizi, ukikimbia msimbo ulioelezwa utapata kosa: malloc(): unaligned tcache chunk detected
. Hivyo, inahitajika kuandika kama anwani katika kiashiria kipya anwani iliyo sawa (au kutekeleza mara nyingi za kutosha msimbo ili anwani iliyoandikwa iwe kweli imepangwa).
Kawaida inawezekana kupata mwanzoni mwa heap kipande kinachoshikilia idadi ya vipande kwa kila index ndani ya tcache na anwani ya kipande cha kichwa cha kila index ya tcache. Ikiwa kwa sababu fulani inawezekana kubadilisha habari hii, itakuwa inawezekana kufanya kipande cha kichwa cha index fulani kiashirie anwani inayotakiwa (kama __malloc_hook
) ili kisha kugawa kipande cha ukubwa wa index na kubadilisha yaliyomo ya __malloc_hook
katika kesi hii.
Libc info leak: Inawezekana kujaza tcaches, kuongeza kipande kwenye orodha isiyo na mpangilio, kufuta tcache na kugawa tena kipande kutoka kwa bin isiyo na mpangilio kwa kubadilisha tu 8B za kwanza, ikiacha anwani ya pili kwa libc kutoka kwa kipande kuwa salama ili tuweze kuisoma.
Tcache attack: Binary ina udhaifu wa overflow wa heap wa 1B. Hii itatumika kubadilisha kichwa cha ukubwa cha kipande kilichogawiwa na kukifanya kuwa kikubwa. Kisha, kipande hiki kitafutwa, kikiongezwa kwenye tcache ya vipande vya ukubwa wa uwongo. Kisha, tutagawia kipande chenye ukubwa wa uwongo, na kipande cha awali kitarejeshwa tukijua kwamba kipande hiki kilikuwa kweli kidogo na hii inatoa fursa ya kubadilisha kipande kinachofuata katika kumbukumbu.
Tutatumia hii kubadilisha kiashiria cha FD cha kipande kinachofuata ili kiashirie malloc_hook
, ili kisha iwezekane kugawa viashiria 2: kwanza kiashiria halali tulichobadilisha, na kisha ugawaji wa pili utarejesha kipande katika malloc_hook
ambacho kinaweza kutumiwa kubandika one gadget.
Libc info leak: Kuna matumizi baada ya kufuta na kufuta mara mbili. Katika andiko hili mwandishi alivuja anwani ya libc kwa kusoma anwani ya kipande kilichowekwa katika bin ndogo (kama kuvuja kutoka kwa bin isiyo na mpangilio lakini kutoka kwa ndogo).
Tcache attack: Tcache inafanywa kupitia kufuta mara mbili. Kipande hicho hicho kinafutwa mara mbili, hivyo ndani ya Tcache kipande kitakuwa kinajielekeza mwenyewe. Kisha, kinagawiwa, kiashiria chake cha FD kinabadilishwa ili kiashirie free hook na kisha kinagawiwa tena ili kipande kinachofuata katika orodha kitakuwa katika free hook. Kisha, hii pia inagawiwa na inawezekana kuandika anwani ya system
hapa ili wakati malloc inayoshikilia "/bin/sh"
inafutwa tunapata shell.
Udhaifu mkuu hapa ni uwezo wa free
anwani yoyote katika heap kwa kuashiria ofset yake.
Tcache indexes attack: Inawezekana kugawa na kufuta kipande cha ukubwa ambao unapohifadhiwa ndani ya kipande cha tcache (kipande chenye habari za tcache bins) kitazalisha anwani yenye thamani 0x100. Hii ni kwa sababu tcache inahifadhi idadi ya vipande kwenye kila bin katika bytes tofauti, hivyo kipande katika index maalum kinazalisha thamani 0x100.
Kisha, thamani hii inaonekana kama kuna kipande cha ukubwa 0x100. Inaruhusu kuabudu kwa free
anwani hii. Hii itafanya kuongeza anwani hiyo kwenye index ya vipande vya ukubwa 0x100 katika tcache.
Kisha, kugawa kipande cha ukubwa 0x100, anwani ya awali itarejeshwa kama kipande, ikiruhusu kubadilisha index nyingine za tcache. Kwa mfano kuweka anwani ya malloc hook katika moja yao na kugawa kipande cha ukubwa wa index hiyo itatoa kipande katika calloc hook, ambayo inaruhusu kuandika one gadget ili kupata shell.
Udhaifu sawa na wa awali lakini ukiwa na kizuizi kimoja cha ziada.
Tcache indexes attack: Shambulio linalofanana na la awali lakini likitumia hatua chache kwa kufuta kipande kinachoshikilia habari za tcache ili anwani yake iongezwe kwenye index ya tcache ya ukubwa wake ili iwezekane kugawa ukubwa huo na kupata habari za kipande cha tcache kama kipande, ambayo inaruhusu kuongeza free hook kama anwani ya index moja, kuigawa, na kuandika one gadget juu yake.
Write After Free kuongeza nambari kwenye kiashiria cha fd
.
Mengi ya heap feng-shui yanahitajika katika changamoto hii. Andiko linaonyesha jinsi kuweka udhibiti wa kichwa cha Tcache free-list ni rahisi sana.
Glibc leak kupitia stdout
(FSOP).
Tcache poisoning kupata primitive ya kuandika isiyo ya kawaida.
Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)