Ret2syscall
Last updated
Last updated
AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Bu, Ret2lib'e benzer, ancak bu durumda bir kütüphaneden bir fonksiyon çağırmayacağız. Bu durumda, her şey /bin/sh
'yi çalıştırmak için bazı argümanlarla sys_execve
sistem çağrısını çağırmak üzere hazırlanacaktır. Bu teknik genellikle statik olarak derlenmiş ikili dosyalar üzerinde gerçekleştirilir, bu nedenle birçok gadget ve sistem çağrısı talimatı olabilir.
Sistem çağrısı için çağrıyı hazırlamak için aşağıdaki yapılandırma gereklidir:
rax: 59 sys_execve'yi belirtir
rdi: "/bin/sh" dosyasını çalıştırmak için işaretçi
rsi: 0 argüman geçmediğini belirtir
rdx: 0 ortam değişkeni geçmediğini belirtir
Yani, temelde /bin/sh
dizesini bir yere yazmak ve ardından syscall
'ı gerçekleştirmek gerekiyor (yığın kontrolü için gereken padding'in farkında olarak). Bunun için, /bin/sh
'yi bilinen bir alana yazmak için bir gadget'a ihtiyacımız var.
Aranacak başka ilginç bir sistem çağrısı mprotect
'tir; bu, bir saldırganın bellekteki bir sayfanın izinlerini değiştirmesine olanak tanır. Bu, ret2shellcode ile birleştirilebilir.
Bu kayıtları nasıl kontrol edeceğimizi bulmaya başlayalım:
Bu adreslerle stack'teki içeriği yazmak ve bunu register'lara yüklemek mümkündür.
Öncelikle bellek içinde yazılabilir bir yer bulmanız gerekiyor.
Sonra, bu adrese rastgele içerik yazmanın bir yolunu bulmanız gerekiyor.
Aşağıdaki komut, yazma-yer-nereye gadget'ları ve syscall talimatları olduğunda, statik bir ikili dosya verildiğinde tam bir sys_execve
ROP zinciri oluşturur:
Eğer gadget eksikliğiniz varsa, örneğin /bin/sh
'yi belleğe yazmak için, yığın üzerinden tüm kayıt değerlerini (RIP ve parametre kayıtları dahil) kontrol etmek için SROP tekniğini kullanabilirsiniz:
64 bit, PIE yok, nx, bazı bellek alanına execve
çağırmak için bir ROP yazın ve oraya atlayın.
64 bit, nx, PIE yok, bazı bellek alanına execve
çağırmak için bir ROP yazın ve oraya atlayın. Yığın üzerinde yazmak için matematiksel işlemler gerçekleştiren bir fonksiyon istismar edilmektedir.
64 bit, PIE yok, nx, BF canary, bazı bellek alanına execve
çağırmak için bir ROP yazın ve oraya atlayın.
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)