mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 06:30:37 +00:00
59 lines
4.9 KiB
Markdown
59 lines
4.9 KiB
Markdown
# Relro
|
||
|
||
{% hint style="success" %}
|
||
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>Support HackTricks</summary>
|
||
|
||
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
||
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
||
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||
|
||
</details>
|
||
{% endhint %}
|
||
|
||
## Relro
|
||
|
||
**RELRO**, **Yeniden Yerleştirme Salt Okunur** anlamına gelir ve **GOT (Küresel Ofset Tablosu)** üzerine yazma ile ilişkili riskleri azaltmak için ikili dosyalarda kullanılan bir güvenlik özelliğidir. İki tür **RELRO** koruması vardır: (1) **Kısmi RELRO** ve (2) **Tam RELRO**. Her ikisi de **GOT** ve **BSS**'yi ELF dosyalarından yeniden sıralar, ancak farklı sonuçlar ve etkilerle. Özellikle, **GOT** bölümünü **BSS**'den *önce* yerleştirir. Yani, **GOT**, **BSS**'den daha düşük adreslerde bulunur, bu nedenle **BSS**'deki değişkenleri taşırarak **GOT** girişlerini yazmak imkansız hale gelir (belleğe yazma işlemi daha düşük adreslerden daha yüksek adreslere doğru gerçekleşir).
|
||
|
||
Kavramı netlik için iki ayrı türüne ayıralım.
|
||
|
||
### **Kısmi RELRO**
|
||
|
||
**Kısmi RELRO**, güvenliği artırmak için daha basit bir yaklaşım benimser ve ikilinin performansını önemli ölçüde etkilemez. Kısmi RELRO, **.got'u salt okunur hale getirir (GOT bölümünün PLT dışı kısmı)**. Kalan bölümün (örneğin, .got.plt) hala yazılabilir olduğunu ve dolayısıyla saldırılara maruz kalabileceğini unutmayın. Bu, **GOT**'un **rastgele yazma** zafiyetleri tarafından kötüye kullanılmasını engellemez.
|
||
|
||
Not: Varsayılan olarak, GCC ikilileri Kısmi RELRO ile derler.
|
||
|
||
### **Tam RELRO**
|
||
|
||
**Tam RELRO**, **tüm GOT'u (hem .got hem de .got.plt) 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, bu da çalışma zamanında herhangi bir değişiklik yapılmasını etkili bir şekilde engeller.
|
||
|
||
Ancak, Tam RELRO ile ilgili bir takas, performans ve başlangıç süresidir. Çünkü GOT'u salt okunur olarak işaretlemeden önce tüm dinamik sembolleri başlangıçta çözmesi gerektiğinden, **Tam RELRO etkin olan ikililer daha uzun yükleme süreleri yaşayabilir**. Bu ek başlangıç yükü, Tam RELRO'nun tüm ikililerde varsayılan olarak etkin olmamasının nedenidir.
|
||
|
||
Tam RELRO'nun bir ikili dosyada **etkin** olup olmadığını görmek mümkündür:
|
||
```bash
|
||
readelf -l /proc/ID_PROC/exe | grep BIND_NOW
|
||
```
|
||
## Bypass
|
||
|
||
Eğer Full RELRO etkinse, bunu aşmanın tek yolu, keyfi yürütme elde etmek için GOT tablosuna yazma gerektirmeyen başka bir yol bulmaktır.
|
||
|
||
**LIBC'nin GOT'u genellikle Partial RELRO'dur**, bu nedenle keyfi bir yazma ile değiştirilebilir. Daha fazla bilgi için [Targetting libc GOT entries](https://github.com/nobodyisnobody/docs/blob/main/code.execution.on.last.libc/README.md#1---targetting-libc-got-entries)**.**
|
||
|
||
{% hint style="success" %}
|
||
AWS Hacking öğrenin ve pratik yapın:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
||
GCP Hacking öğrenin ve pratik yapın: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
||
|
||
<details>
|
||
|
||
<summary>HackTricks'i Destekleyin</summary>
|
||
|
||
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
|
||
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
|
||
* **Hacking ipuçlarını paylaşmak için [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.**
|
||
|
||
</details>
|
||
{% endhint %}
|