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

3.1 KiB

Relro

Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!

Drugi načini podrške HackTricks-u:

Relro

RELRO označava Relocation Read-Only, i to je sigurnosna funkcija koja se koristi u binarnim fajlovima kako bi se umanjili rizici povezani sa GOT (Global Offset Table) prepisivanjem. Razložićemo koncept na dva različita tipa radi jasnoće: Partial RELRO i Full RELRO.

Partial RELRO

Partial RELRO koristi jednostavniji pristup poboljšanju sigurnosti bez značajnog uticaja na performanse binarnog fajla. Pomeranjem GOT iznad promenljivih programa u memoriji, Partial RELRO ima za cilj da spreči preplavljivanje bafera da dosegne i ošteti GOT.

Ovo ne sprečava zloupotrebu GOT-a od strane ranjivosti proizvolnog pisanja.

Full RELRO

Full RELRO podiže zaštitu tako što čini GOT i sekciju .fini_array potpuno samo za čitanje. Kada binarni fajl počne, sve adrese funkcija se rešavaju i učitavaju u GOT, zatim, GOT se označava kao samo za čitanje, efikasno sprečavajući bilo kakve modifikacije tokom izvršavanja.

Međutim, trgovina sa Full RELRO-om je u pogledu performansi i vremena pokretanja. Zbog potrebe da se reše svi dinamički simboli pri pokretanju pre označavanja GOT-a kao samo za čitanje, binarni fajlovi sa omogućenim Full RELRO-om mogu imati duže vreme učitavanja. Ovaj dodatni početni trošak je razlog zašto Full RELRO nije podrazumevano omogućen u svim binarnim fajlovima.

Moguće je proveriti da li je Full RELRO omogućen u binarnom fajlu sa:

readelf -l /proc/ID_PROC/exe | grep BIND_NOW

Bypass

Ako je omogućen puni RELRO, jedini način da ga zaobiđete je pronaći drugi način koji ne zahteva pisanje u GOT tabelu kako biste dobili proizvoljno izvršenje.

Imajte na umu da je GOT biblioteke obično delimično RELRO, pa je moguće izmeniti je pomoću proizvoljnog pisanja. Više informacija u Targetting libc GOT entries.