Tcache Bin Attack

Reading time: 5 minutes

tip

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)

Support HackTricks

Basic Information

Kwa maelezo zaidi kuhusu nini Tcache bin angalia ukurasa huu:

{{#ref}} bins-and-memory-allocations.md {{#endref}}

Kwanza kabisa, kumbuka kwamba Tcache ilianzishwa katika toleo la Glibc 2.26.

Tcache attack (pia inajulikana kama Tcache poisoning) iliyopendekezwa katika guyinatuxido page ni sawa sana na shambulio la fast bin ambapo lengo ni kubadilisha kiashiria cha kipande kinachofuata ndani ya bin ndani ya kipande kilichofutwa kuwa anwani isiyo ya kawaida ili baadaye iwezekane kugawa anwani hiyo maalum na kwa uwezekano kubadilisha pointes.

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 binary ili anwani iliyoandikwa iwe kweli imepangwa).

Tcache indexes attack

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 tcache index. 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.

Examples

  • CTF https://guyinatuxedo.github.io/29-tcache/dcquals19_babyheap/index.html
  • 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 bandia. Kisha, tutagawia kipande chenye ukubwa bandia, na kipande cha awali kitarejeshwa tukijua kwamba kipande hiki kwa kweli kilikuwa kidogo na hii inatoa fursa ya kubadilisha kipande kinachofuata katika kumbukumbu.
    Tutatumia hii kubadilisha kiashiria cha FD cha kipande kinachofuata ili kiashirie malloc_hook, hivyo basi inawezekana kugawa viashiria 2: kwanza kiashiria halali tulichobadilisha, na kisha ugawaji wa pili utarejesha kipande katika malloc_hook ambacho kinaweza kutumika kuandika one gadget.
  • CTF https://guyinatuxedo.github.io/29-tcache/plaid19_cpp/index.html
  • 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 kinaashiria mwenyewe. Kisha, kinagawiwa, kiashiria chake cha FD kinabadilishwa kuashiria free hook na kisha kinagawiwa tena hivyo kipande kinachofuata katika orodha kitakuwa katika free hook. Kisha, hii pia inagawiwa na inawezekana kuandika anwani ya system hapa hivyo wakati malloc inayoshikilia "/bin/sh" inafutwa tunapata shell.
  • CTF https://guyinatuxedo.github.io/44-more_tcache/csaw19_popping_caps0/index.html
  • 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 kimoja 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 kutatoa kipande katika calloc hook, ambayo inaruhusu kuandika one gadget ili kupata shell.
  • CTF https://guyinatuxedo.github.io/44-more_tcache/csaw19_popping_caps1/index.html
  • Udhaifu sawa na wa awali lakini ukiwa na kikomo 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.
  • Math Door. HTB Cyber Apocalypse CTF 2023
  • Write After Free kuongeza nambari kwenye kiashiria cha fd.
  • Mengi ya heap feng-shui yanahitajika katika changamoto hii. Andiko linaonyesha jinsi kudhibiti kichwa cha Tcache free-list ni rahisi sana.
  • Glibc leak kupitia stdout (FSOP).
  • Tcache poisoning kupata primitive ya kuandika isiyo ya kawaida.

tip

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)

Support HackTricks