.. | ||
tools | ||
elf-tricks.md | ||
README.md |
Mbinu ya Msingi ya Udukuzi wa Binary
Jifunze udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako ikitangazwa kwenye HackTricks au kupakua HackTricks kwa PDF Angalia MIPANGO YA USAJILI!
- Pata bidhaa rasmi za PEASS & HackTricks
- Gundua Familia ya PEASS, mkusanyiko wetu wa NFTs ya kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa HackTricks na HackTricks Cloud github repos.
Taarifa Msingi za ELF
Kabla ya kuanza kutumia udhaifu wowote, ni muhimu kuelewa sehemu ya muundo wa binary ya ELF:
{% content-ref url="elf-tricks.md" %} elf-tricks.md {% endcontent-ref %}
Zana za Udukuzi
{% content-ref url="tools/" %} zana {% endcontent-ref %}
Mbinu ya Kujaza Stack
Kwa mbinu nyingi ni vizuri kuwa na mpango ambapo kila mbinu itakuwa na manufaa. Kumbuka kuwa kinga sawa zitaathiri mbinu tofauti. Unaweza kupata njia za kuzidisha kinga kwenye kila sehemu ya kinga lakini sio katika mbinu hii.
Kudhibiti Mwelekeo
Kuna njia tofauti unaweza kumaliza kudhibiti mwelekeo wa programu:
- Kujaza Stack kwa kubadilisha kiashiria cha kurudi kutoka kwenye stack au EBP -> ESP -> EIP.
- Inaweza kuhitaji kutumia Kujaza Nambari kusababisha kujaa
- Au kupitia Andika Nini Wapi hadi Utekelezaji
- Vidokezo vya Format: Tumia
printf
kuandika yaliyomo yoyote kwenye anwani yoyote. - Kuorodhesha Array: Tumia kiashiria kilichopangwa vibaya ili kuweza kudhibiti baadhi ya mizunguko na kupata andika isiyo na mpangilio.
- Inaweza kuhitaji kutumia Kujaza Nambari kusababisha kujaa
- bof hadi WWW kupitia ROP: Tumia kujaza kijazo cha buffer kujenga ROP na kuweza kupata WWW.
Unaweza kupata mbinu za Andika Nini Wapi hadi Utekelezaji katika:
{% content-ref url="../arbitrary-write-2-exec/" %} arbitrary-write-2-exec {% endcontent-ref %}
Mizunguko Isiyokuwa na Mwisho
Jambo la kuzingatia ni kwamba kawaida udukuzi mmoja wa udhaifu huenda usiwe wa kutosha kutekeleza udanganyifu wa mafanikio, hasa baadhi ya kinga zinahitaji kuzidishwa. Kwa hivyo, ni muhimu kujadili chaguzi kadhaa za kufanya udhaifu mmoja uweze kutumiwa mara kadhaa katika utekelezaji huo wa binary:
- Andika kwenye mnyororo wa ROP anwani ya kazi ya msingi au kwenye anwani ambapo udhaifu unatokea.
- Kwa kudhibiti mnyororo sahihi wa ROP unaweza kutekeleza vitendo vyote katika mnyororo huo
- Andika anwani ya
exit
kwenye GOT (au kazi nyingine inayotumiwa na binary kabla ya kumaliza) anwani ya kurudi nyuma kwa udhaifu - Kama ilivyoelezwa katika .fini_array, hifadhi hapa 2 kazi, moja kuita udhaifu tena na nyingine kuita**
__libc_csu_fini
** ambayo itaita tena kazi kutoka.fini_array
.
Malengo ya Udukuzi
lengo: Piga simu kwa Kazi Iliyopo
- ret2win: Kuna kazi katika nambari unayohitaji kupiga simu (labda na baadhi ya parameta maalum) ili kupata bendera.
- Katika bof ya kawaida bila PIE na canary unahitaji tu kuandika anwani kwenye anwani ya kurudi iliyohifadhiwa kwenye stack.
- Katika bof na PIE, utahitaji kuzidisha
- Katika bof na canary, utahitaji kuzidisha
- Ikiwa unahitaji kuweka vigezo kadhaa kuita kazi ya ret2win kwa usahihi unaweza kutumia:
- Mnyororo wa ROP ikiwa kuna vifaa vya kutosha kuandaa vigezo vyote
- SROP (kwa hali unaweza kupiga simu hii) kudhibiti usajili mwingi
- Vifaa kutoka ret2csu na ret2vdso kudhibiti usajili kadhaa
- Kupitia Andika Nini Wapi hadi Utekelezaji unaweza kutumia udhaifu mwingine (si bof) kuita kazi ya
ushindi
. - Kuhamisha Pointi: Kwa kesi stack ina pointi kwa kazi itakayoitwa au kwa herufi itakayotumiwa na kazi ya kuvutia (mfumo au printf), inawezekana kubadilisha anwani hiyo.
- ASLR au PIE inaweza kuathiri anwani.
- Vigezo visivyo na thamani: Huwezi kujua.
lengo: RCE
Kupitia shellcode, ikiwa nx imelemazwa au kuchanganya shellcode na ROP:
- (Stack) Shellcode: Hii ni muhimu kuhifadhi shellcode kwenye stack kabla au baada ya kubadilisha kiashiria cha kurudi na kisha kuhamia kwake kuitekeleza:
- Katika kesi yoyote, ikiwa kuna canary, katika bof ya kawaida utahitaji kuzidisha (kuvuja) hiyo
- Bila ASLR na nx inawezekana kuhama kwenye anwani ya stack kwani haitabadilika kamwe
- Na ASLR utahitaji mbinu kama ret2esp/ret2reg kuhama kwake
- Na nx, utahitaji kutumia baadhi ya ROP kupiga simu kwa
memprotect
na kufanya ukurasa fulani uwerwx
, ili kisha hifadhi shellcode hapo (kupiga simu kwa kusoma kwa mfano) na kisha hama hapo. - Hii itachanganya shellcode na mnyororo wa ROP.
Kupitia syscalls
- Ret2syscall: Inatumika kuita
execve
ili kuendesha amri za aina yoyote. Unahitaji kuweza kupata gadgets za kuita syscall maalum na parameta. - Ikiwa ASLR au PIE zimeanzishwa utahitaji kuzishinda ili kutumia ROP gadgets kutoka kwenye binary au maktaba.
- SROP inaweza kuwa na manufaa kwa kuandaa ret2execve
- Gadgets kutoka ret2csu na ret2vdso ili kudhibiti baadhi ya rejista
Kupitia libc
- Ret2lib: Inatumika kuita kazi kutoka kwenye maktaba (kawaida kutoka
libc
) kama vilesystem
na baadhi ya hoja zilizoandaliwa (k.m.'/bin/sh'
). Unahitaji binary ili ipakie maktaba na kazi unayotaka kuita (kawaida libc). - Ikiwa imekompiliwa tuli na hakuna PIE, anwani ya
system
na/bin/sh
haitabadilika, hivyo ni rahisi kuzitumia tuli. - Bila ASLR na kujua toleo la libc lililopakiwa, anwani ya
system
na/bin/sh
haitabadilika, hivyo ni rahisi kuzitumia tuli. - Ikiwa kuna ASLR lakini hakuna PIE, kwa kujua libc na binary ikitumia kazi ya
system
ni rahisiret
kwenye anwani ya system kwenye GOT na anwani ya'/bin/sh'
kwenye parameta (utahitaji kufikiria hili). - Ikiwa kuna ASLR lakini hakuna PIE, kwa kujua libc na bila binary kutumia kazi ya
system
: - Tumia
ret2dlresolve
kutatua anwani yasystem
na kuipiga simu - Zuia ASLR na kuhesabu anwani ya
system
na'/bin/sh'
kwenye kumbukumbu. - Pamoja na ASLR na PIE na bila kujua libc: Unahitaji:
- Zuia PIE
- Pata toleo la libc lililotumika (leak anwani za kazi kadhaa)
- Angalia hali za awali za ASLR ili kuendelea.
Kupitia EBP/RBP
- Stack Pivoting / EBP2Ret / EBP Chaining: Dhibiti ESP ili kudhibiti RET kupitia EBP iliyohifadhiwa kwenye steki.
- Ina manufaa kwa kuzidi kidogo kwenye mlipuko wa steki
- Ina manufaa kama njia mbadala ya kumaliza kudhibiti EIP wakati wa kutumia EIP kujenga mzigo wa data kwenye kumbukumbu na kisha kuruka kwenda kwake kupitia EBP
Mambo Mengine
- Pointers Redirecting: Kwenye hali ambapo steki ina pointa kwenye kazi itakayoitwa au kwenye herufi itakayotumiwa na kazi ya kuvutia (kama vile system au printf), inawezekana kubadilisha anwani hiyo.
- ASLR au PIE inaweza kuathiri anwani.
- Variables zisizowekwa: Kamwe hujui
Jifunze kuhusu kuhack AWS kutoka mwanzo hadi kuwa shujaa na htARTE (HackTricks AWS Red Team Expert)!
Njia nyingine za kusaidia HackTricks:
- Ikiwa unataka kuona kampuni yako ikitangazwa kwenye HackTricks au kupakua HackTricks kwa PDF Angalia MIPANGO YA KUJIUNGA!
- Pata bidhaa rasmi za PEASS & HackTricks
- Gundua Familia ya PEASS, mkusanyiko wetu wa NFTs za kipekee
- Jiunge na 💬 Kikundi cha Discord au kikundi cha telegram au tufuate kwenye Twitter 🐦 @hacktricks_live.
- Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwenye HackTricks na HackTricks Cloud github repos.