Heap Overflow

Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

Taarifa Msingi

Kujaa kwa heap ni kama kujaa kwa steki lakini kwenye heap. Kimsingi inamaanisha kuwa nafasi fulani ilireserviwa kwenye heap kuhifadhi data fulani na data iliyohifadhiwa ilikuwa kubwa kuliko nafasi iliyoreserviwa.

Kwenye kujaa kwa steki tunajua kwamba baadhi ya rejista kama kipima maelekezo au fremu ya steki itarejeshwa kutoka kwenye steki na inaweza kuwa inawezekana kuitumia vibaya. Kwenye kesi ya kujaa kwa heap, hakuna habari nyeti iliyohifadhiwa kwa chaguo-msingi kwenye kipande cha heap kinachoweza kujaa. Hata hivyo, inaweza kuwa habari nyeti au pointa, hivyo umuhimu wa udhaifu huu unategemea ni data gani inaweza kubadilishwa na jinsi mshambuliaji anaweza kutumia hii.

Ili kupata vishikizo vya kujaa unaweza kutumia mifano ile ile kama kwenye kujaa kwa steki.

Kujaa kwa Steki dhidi ya Kujaa kwa Heap

Kwenye kujaa kwa steki, upangaji na data ambayo itakuwepo kwenye steki wakati udhaifu unaweza kuzinduliwa ni ya kuaminika kwa kiasi kikubwa. Hii ni kwa sababu steki ni mwendelezo, ikiongezeka daima kwenye kumbukumbu inayogongana, kwenye maeneo maalum ya kukimbia kwa programu kumbukumbu ya steki kawaida inahifadhi aina sawa ya data na ina muundo maalum na pointa fulani mwishoni mwa sehemu ya steki inayotumiwa na kila kazi.

Hata hivyo, kwenye kesi ya kujaa kwa heap, kwa sababu kumbukumbu inayotumiwa si mwendelezo lakini vipande vilivyotengwa kawaida viko kwenye nafasi tofauti za kumbukumbu (si moja karibu na nyingine) kwa sababu ya makandokando na maeneo yanayotenganisha alokesheni kwa ukubwa na kwa sababu kumbukumbu iliyotolewa awali inatumika kabla ya kutenga vipande vipya. Ni ngumu kujua kitu ambacho kitagongana na kile kilichovumbuliwa kuwa katika hatari ya kujaa kwa heap. Kwa hivyo, unapopata kujaa kwa heap, ni muhimu kupata njia ya kuaminika ya kufanya kitu kilichotaka kiwe kifuatacho kwenye kumbukumbu kutoka kwa kile kinachoweza kujaa.

Moja ya mbinu zinazotumika kwa hili ni Kupamba kwa Heap ambayo hutumiwa kwa mfano katika chapisho hili. Katika chapisho hilo inaelezea jinsi wakati wa kernel wa iOS unapokosa kumbukumbu ya kuhifadhi vipande vya kumbukumbu, inapanua kwa ukurasa wa kernel, na ukurasa huu unagawanywa katika vipande vya ukubwa uliotarajiwa ambavyo vitatumika kwa mpangilio (hadi toleo la iOS 9.2, kisha vipande hivi vinatumika kwa njia iliyochanganyikiwa ili kufanya ugumu wa kudukua mashambulizi haya).

Kwa hivyo, katika chapisho la awali ambapo kujaa kwa heap inatokea, ili kulazimisha kitu kilichovuja kugongana na mpangilio wa mwathiriwa, kallocs kadhaa zinalazimishwa na nyuzi kadhaa kujaribu kuhakikisha kuwa vipande vyote vilivyotolewa vimejazwa na ukurasa mpya unatengenezwa.

Ili kulazimisha kujazwa huku na vitu vya ukubwa maalum, mgawanyo wa nje unaohusishwa na mlango wa iOS mach ni mgombea bora. Kwa kutengeneza ukubwa wa ujumbe, inawezekana kubainisha kwa usahihi ukubwa wa alokesheni ya kalloc na wakati mlango wa mach unaohusika unaharibiwa, alokesheni inayohusiana itaachiliwa mara moja kurudi kwa kfree.

Kisha, baadhi ya hizi nafasi zinaweza kuachiliwa. Orodha ya kufungua ya kalloc.4096 inaachilia vipengele kwa mpangilio wa mwisho kuingia kwanza, ambayo kimsingi inamaanisha kwamba ikiwa baadhi ya nafasi zinaachiliwa na shambulizi linajaribu kutoa vitu vingi waathiriwa wakati ikijaribu kutenga kitu kinachoweza kujaa, ni uwezekano kwamba kitu hiki kitafuatwa na kitu cha mwathiriwa.

Mfano wa ARM64

Kwenye ukurasa https://8ksec.io/arm64-reversing-and-exploitation-part-1-arm-instruction-set-simple-heap-overflow/ unaweza kupata mfano wa kujaa kwa heap ambapo amri itakayotekelezwa imehifadhiwa kwenye kipande kinachofuata kutoka kwa kipande kilichojaa. Kwa hivyo, inawezekana kubadilisha amri itakayotekelezwa kwa kuibadilisha na shambulizi rahisi kama:

python3 -c 'print("/"*0x400+"/bin/ls\x00")' > hax.txt
Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Last updated