hacktricks/binary-exploitation/common-binary-protections-and-bypasses/relro.md

3.2 KiB
Raw Blame History

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
{% endhint %}

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ıı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.