3.2 KiB
Relro
{% hint style="success" %}
AWS Hacking öğrenin ve uygulayın: HackTricks Eğitim AWS Kırmızı Takım Uzmanı (ARTE)
GCP Hacking öğrenin ve uygulayın: HackTricks Eğitim GCP Kırmızı Takım Uzmanı (GRTE)
HackTricks'i Destekleyin
- Abonelik planlarını kontrol edin!
- 💬 Discord grubuna katılın veya telegram grubuna katılın veya bizi Twitter 🐦 @hacktricks_live** takip edin.**
- Hacking püf noktalarını paylaşarak PR'ler göndererek HackTricks ve HackTricks Cloud github depolarına katkıda bulunun.
Relro
RELRO, Relocation Read-Only'nin kısaltmasıdır ve GOT (Global Offset Table) üzerine yazma risklerini azaltmak için ikili dosyalarda kullanılan bir güvenlik özelliğidir. Kavramı açıklığa kavuşturmak için iki farklı türü olan Partial RELRO ve Full RELRO'yu inceleyelim.
Partial RELRO
Partial RELRO, ikili dosyanın performansını önemli ölçüde etkilemeden güvenliği artırmak için daha basit bir yaklaşım benimser. GOT'yi programın değişkenlerinin bellekte üzerine yerleştirerek, Partial RELRO, tampon taşmalarının GOT'a ulaşmasını ve onu bozmasını engellemeyi amaçlar.
Bu, GOT'un keyfi yazma zafiyetlerinden kötüye kullanılmasını engellemez.
Full RELRO
Full RELRO, GOT ve .fini_array bölümünü tamamen salt okunur hale getirerek korumayı artırır. İkili dosya başladığında tüm işlev adresleri çözülür ve GOT'a yüklenir, ardından GOT salt okunur olarak işaretlenir, böylece çalışma zamanında herhangi bir değişikliğe izin verilmez.
Ancak, Full RELRO ile performans ve başlatma süresi arasında bir takas yapılır. GOT'u salt okunur olarak işaretlemek için başlangıçta tüm dinamik sembolleri çözmesi gerektiğinden, Full RELRO etkinleştirilmiş ikili dosyalar daha uzun yükleme süreleri yaşayabilir. Bu ek başlangıç maliyeti nedeniyle Full RELRO varsayılan olarak tüm ikili dosyalarda etkinleştirilmez.
Bir ikili dosyada Full RELRO'nun etkinleştirilip etkinleştirilmediğini görmek mümkündür:
readelf -l /proc/ID_PROC/exe | grep BIND_NOW
Atlatma
Tam RELRO etkinleştirildiğinde, bunu atlatmanın tek yolu, keyfi yürütme elde etmek için GOT tablosuna yazma gerektirmeyen başka bir yol bulmaktır.
LIBC'nin GOT tablosu genellikle Kısmi RELRO olduğundan, keyfi yazma ile değiştirilebilir. Daha fazla bilgi için LIBC GOT girişlerini hedefleme.