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 je tehnika koja se koristi u binary exploitation gde napadač piše shellcode na stek ranjivog programa, a zatim menja Instruction Pointer (IP) ili Extended Instruction Pointer (EIP) da pokazuje na lokaciju ovog shellcode-a, uzrokujući njegovo izvršavanje. Ovo je klasična metoda koja se koristi za sticanje neovlašćenog pristupa ili izvršavanje proizvoljnih komandi na ciljanom sistemu. Evo pregleda procesa, uključujući jednostavan C primer i kako biste mogli napisati odgovarajući exploit koristeći Python sa pwntools.
Hajde da počnemo sa jednostavnim primerom ranjivog C programa:
Ovaj program je podložan prelivanju bafera zbog korišćenja gets()
funkcije.
Da biste kompajlirali ovaj program dok onemogućavate razne zaštite (da simulirate ranjivo okruženje), možete koristiti sledeću komandu:
-fno-stack-protector
: Onemogućava zaštitu steka.
-z execstack
: Čini stek izvršivim, što je neophodno za izvršavanje shellcode-a smeštenog na steku.
-no-pie
: Onemogućava poziciono nezavisne izvršne datoteke, olakšavajući predviđanje memorijske adrese na kojoj će se naš shellcode nalaziti.
-m32
: Kompajlira program kao 32-bitnu izvršnu datoteku, često korišćenu zbog jednostavnosti u razvoju eksploata.
Evo kako možete napisati exploit u Python-u koristeći pwntools za izvođenje ret2shellcode napada:
Ovaj skript konstruira payload koji se sastoji od NOP slide, shellcode, i zatim prepisuje EIP sa adresom koja pokazuje na NOP slide, osiguravajući da se shellcode izvrši.
NOP slide (asm('nop')
) se koristi za povećanje šanse da će izvršenje "kliznuti" u naš shellcode bez obzira na tačnu adresu. Prilagodite p32()
argument na početnu adresu vašeg bafera plus offset da biste sleteli u NOP slide.
ASLR treba da bude onemogućen da bi adresa bila pouzdana tokom izvršenja ili adresa na kojoj će funkcija biti smeštena neće uvek biti ista i biće vam potrebna neka leak da biste saznali gde je win funkcija učitana.
Stack Canaries takođe treba da budu onemogućeni ili kompromitovana EIP adresa povratka nikada neće biti praćena.
NX stack zaštita bi sprečila izvršenje shellcode unutar steka jer ta oblast neće biti izvršna.
64bit, ASLR sa leak-om adrese steka, napiši shellcode i skoči na njega
32 bit, ASLR sa leak-om steka, napiši shellcode i skoči na njega
32 bit, ASLR sa leak-om steka, poređenje da se spreči poziv na exit(), prepiši promenljivu sa vrednošću i napiši shellcode i skoči na njega
arm64, bez ASLR, ROP gadget za izvršavanje steka i skakanje na shellcode u steku
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)