Stack Shellcode
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Stack shellcode is 'n tegniek wat in binary exploitation gebruik word waar 'n aanvaller shellcode na 'n kwesbare program se stapel skryf en dan die Instruction Pointer (IP) of Extended Instruction Pointer (EIP) aanpas om na die ligging van hierdie shellcode te wys, wat dit laat uitvoer. Dit is 'n klassieke metode wat gebruik word om ongemagtigde toegang te verkry of arbitrêre opdragte op 'n teikenstelsel uit te voer. Hier is 'n opsomming van die proses, insluitend 'n eenvoudige C voorbeeld en hoe jy 'n ooreenstemmende exploit met Python en pwntools kan skryf.
Kom ons begin met 'n eenvoudige voorbeeld van 'n kwesbare C program:
Hierdie program is kwesbaar vir 'n buffer overflow as gevolg van die gebruik van die gets()
funksie.
Om hierdie program te compileer terwyl verskeie beskermings gedeaktiveer word (om 'n kwesbare omgewing te simuleer), kan jy die volgende opdrag gebruik:
-fno-stack-protector
: Deaktiveer stapelbeskerming.
-z execstack
: Maak die stapel uitvoerbaar, wat nodig is om shellcode wat op die stapel gestoor is, uit te voer.
-no-pie
: Deaktiveer Posisie Onafhanklike Uitvoerbare, wat dit makliker maak om die geheueadres te voorspel waar ons shellcode geleë sal wees.
-m32
: Kompiler die program as 'n 32-bis uitvoerbare, dikwels gebruik vir eenvoud in eksploitontwikkeling.
Hier is hoe jy 'n eksploit in Python kan skryf met pwntools om 'n ret2shellcode aanval uit te voer:
This script konstrueer 'n payload wat bestaan uit 'n NOP slide, die shellcode, en dan oorskryf dit die EIP met die adres wat na die NOP slide wys, wat verseker dat die shellcode uitgevoer word.
Die NOP slide (asm('nop')
) word gebruik om die kans te verhoog dat uitvoering "gly" in ons shellcode, ongeag die presiese adres. Pas die p32()
argument aan na die beginadres van jou buffer plus 'n offset om in die NOP slide te land.
ASLR moet gedeaktiveer word vir die adres om betroubaar te wees oor uitvoerings of die adres waar die funksie gestoor sal word sal nie altyd dieselfde wees nie en jy sal 'n leak nodig hê om uit te vind waar die win funksie gelaai is.
Stack Canaries moet ook gedeaktiveer word of die gecompromitteerde EIP terugadres sal nooit gevolg word nie.
NX stack beskerming sal die uitvoering van die shellcode binne die stack voorkom omdat daardie streek nie uitvoerbaar sal wees nie.
64bit, ASLR met stack adres leak, skryf shellcode en spring daarnaartoe
32 bit, ASLR met stack leak, skryf shellcode en spring daarnaartoe
32 bit, ASLR met stack leak, vergelyking om oproep na exit() te voorkom, oorskryf veranderlike met 'n waarde en skryf shellcode en spring daarnaartoe
arm64, geen ASLR nie, ROP gadget om stack uitvoerbaar te maak en spring na shellcode in stack
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)