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 dosyalarda gerçekleştirilir, bu nedenle birçok gadget ve sistem çağrısı talimatı olabilir.
syscall çağrısını 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çilmediğini belirtir
rdx: 0 ortam değişkeni geçilmediğini belirtir
Yani, temelde /bin/sh
dizesini bir yere yazmak ve ardından syscall
'ı gerçekleştirmek gerekiyor (stack'i kontrol etmek 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.
Çağrılacak başka ilginç bir sistem çağrısı mprotect
'dir; 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-nerede-ne yazılacağı aletleri 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 Eğitim AWS Kırmızı Takım Uzmanı (ARTE) GCP Hacking'i öğrenin ve pratik yapın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)