Stack Shellcode
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Stack shellcode ni mbinu inayotumika katika binary exploitation ambapo mshambuliaji anaandika shellcode kwenye stack ya programu iliyo hatarini na kisha kubadilisha Instruction Pointer (IP) au Extended Instruction Pointer (EIP) ili kuelekeza kwenye eneo la shellcode hii, na kusababisha itekelezwe. Hii ni njia ya jadi inayotumika kupata ufikiaji usioidhinishwa au kutekeleza amri zisizo za kawaida kwenye mfumo wa lengo. Hapa kuna muhtasari wa mchakato, ikiwa ni pamoja na mfano rahisi wa C na jinsi unavyoweza kuandika exploit inayolingana kwa kutumia Python na pwntools.
Tuanze na mfano rahisi wa programu ya C iliyo hatarini:
Huu programu ina udhaifu wa overflow ya buffer kutokana na matumizi ya kazi ya gets()
.
Ili kuunda programu hii huku ukizima ulinzi mbalimbali (ili kuiga mazingira yenye udhaifu), unaweza kutumia amri ifuatayo:
-fno-stack-protector
: Inazima ulinzi wa stack.
-z execstack
: Inafanya stack kuwa executable, ambayo ni muhimu kwa kutekeleza shellcode iliyohifadhiwa kwenye stack.
-no-pie
: Inazima Position Independent Executable, na kufanya iwe rahisi kutabiri anwani ya kumbukumbu ambapo shellcode yetu itakuwa.
-m32
: Inakusanya programu kama executable ya 32-bit, mara nyingi hutumiwa kwa urahisi katika maendeleo ya exploit.
Hapa kuna jinsi unavyoweza kuandika exploit katika Python ukitumia pwntools kufanya shambulio la ret2shellcode:
Hii script inajenga payload inayojumuisha NOP slide, shellcode, na kisha inabadilisha EIP kwa anwani inayotaja NOP slide, kuhakikisha shellcode inatekelezwa.
NOP slide (asm('nop')
) inatumika kuongeza nafasi kwamba utekelezaji uta "slide" ndani ya shellcode yetu bila kujali anwani halisi. Badilisha hoja ya p32()
kwa anwani ya mwanzo ya buffer yako pamoja na offset ili kuingia kwenye NOP slide.
ASLR inapaswa kuzuiliwa ili anwani iwe ya kuaminika katika utekelezaji tofauti au anwani ambapo kazi itahifadhiwa haitakuwa kila wakati sawa na unahitaji kuwa na leak ili kubaini wapi kazi ya win imepakiwa.
Stack Canaries pia inapaswa kuzuiliwa au anwani ya kurudi ya EIP iliyovunjika haitafuatiwa kamwe.
NX stack ulinzi utazuia utekelezaji wa shellcode ndani ya stack kwa sababu eneo hilo halitakuwa la kutekelezeka.
64bit, ASLR na stack address leak, andika shellcode na kuruka kwake
32 bit, ASLR na stack leak, andika shellcode na kuruka kwake
32 bit, ASLR na stack leak, kulinganisha kuzuia wito wa exit(), badilisha variable na thamani na andika shellcode na kuruka kwake
arm64, hakuna ASLR, ROP gadget kufanya stack iwe ya kutekelezeka na kuruka kwa shellcode ndani ya stack
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)