Ret2syscall
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Basic Information
Ovo je slično Ret2lib, međutim, u ovom slučaju nećemo pozivati funkciju iz biblioteke. U ovom slučaju, sve će biti pripremljeno za pozivanje syscall sys_execve
sa nekim argumentima za izvršavanje /bin/sh
. Ova tehnika se obično izvodi na binarnim datotekama koje su kompajlirane statički, tako da može biti mnogo gadgeta i syscall instrukcija.
Da bismo pripremili poziv za syscall, potrebna je sledeća konfiguracija:
rax: 59 Specifikujte sys_execve
rdi: ptr do "/bin/sh" specifikujte datoteku za izvršavanje
rsi: 0 specifikujte da nema prosleđenih argumenata
rdx: 0 specifikujte da nema prosleđenih promenljivih okruženja
Dakle, u suštini, potrebno je napisati string /bin/sh
negde i zatim izvršiti syscall
(imajući u vidu padding potreban za kontrolu steka). Za to nam je potreban gadget da napišemo /bin/sh
u poznatom području.
Još jedan zanimljiv syscall za pozivanje je mprotect
koji bi omogućio napadaču da modifikuje dozvole stranice u memoriji. Ovo se može kombinovati sa ret2shellcode.
Register gadgets
Hajde da počnemo sa pronalaženjem kako kontrolisati te registre:
Sa ovim adresama je moguće napisati sadržaj na steku i učitati ga u registre.
Napiši string
Mesto za pisanje
Prvo treba da pronađete mesto za pisanje u memoriji
Write String in memory
Zatim treba da pronađete način da upišete proizvoljan sadržaj na ovu adresu
Automatizujte ROP lanac
Sledeća komanda kreira puni sys_execve
ROP lanac za dati statički binarni fajl kada postoje write-what-where gadgeti i syscall instrukcije:
32 бита
64 бита
Nedostatak Gadžeta
Ako vam nedostaju gadžeti, na primer da napišete /bin/sh
u memoriji, možete koristiti SROP tehniku da kontrolišete sve vrednosti registara (uključujući RIP i registre parametara) iz steka:
Primer Eksploatacije
Ostali primeri i reference
64 bita, bez PIE, nx, upisati u neku memoriju ROP za pozivanje
execve
i skočiti tamo.64 bita, nx, bez PIE, upisati u neku memoriju ROP za pozivanje
execve
i skočiti tamo. Da bi se upisalo na stek, zloupotrebljava se funkcija koja vrši matematičke operacije.64 bita, bez PIE, nx, BF kanar, upisati u neku memoriju ROP za pozivanje
execve
i skočiti tamo.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated