Relro
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
RELRO staan vir Relocation Read-Only, en dit is 'n sekuriteitskenmerk wat in binêre lêers gebruik word om die risiko's wat verband hou met GOT (Global Offset Table) oorskrywings te verminder. Daar is twee tipes RELRO beskermings: (1) Deeltelike RELRO en (2) Volledige RELRO. Albei herskik die GOT en BSS van ELF-lêers, maar met verskillende resultate en implikasies. Spesifiek plaas hulle die GOT afdeling voor die BSS. Dit wil sê, GOT is op laer adresse as BSS, wat dit onmoontlik maak om GOT inskrywings te oorskry deur veranderlikes in die BSS oor te loop (onthou dat skryf in geheue van laer na hoër adresse gebeur).
Kom ons breek die konsep af in sy twee duidelike tipes vir duidelikheid.
Deeltelike RELRO neem 'n eenvoudiger benadering om sekuriteit te verbeter sonder om die binêre se prestasie aansienlik te beïnvloed. Deeltelike RELRO maak die .got slegs leesbaar (die nie-PLT deel van die GOT afdeling). Hou in gedagte dat die res van die afdeling (soos die .got.plt) steeds skryfbaar is en, gevolglik, onderhewig is aan aanvalle. Dit verhoed nie dat die GOT misbruik word van arbitrêre skryf kwesbaarhede nie.
Nota: Standaard kompileer GCC binêre met Deeltelike RELRO.
Volledige RELRO verhoog die beskerming deur die hele GOT (both .got en .got.plt) en .fini_array afdeling heeltemal slegs leesbaar te maak. Sodra die binêre begin, word al die funksie adresse opgelos en in die GOT gelaai, dan word GOT as slegs leesbaar gemerk, wat effektief enige wysigings aan dit tydens uitvoering voorkom.
Die handelsoffensief met Volledige RELRO is egter in terme van prestasie en opstarttyd. Omdat dit al die dinamiese simbole by opstart moet oplos voordat dit die GOT as slegs leesbaar merk, kan binêre met Volledige RELRO geaktiveer langer laai tye ervaar. Hierdie ekstra opstartlas is waarom Volledige RELRO nie standaard in alle binêre geaktiveer is nie.
Dit is moontlik om te sien of Volledige RELRO geaktiveer is in 'n binêre met:
As Volle RELRO geaktiveer is, is die enigste manier om dit te omseil om 'n ander manier te vind wat nie skryf in die GOT tabel benodig om arbitrêre uitvoering te verkry nie.
Let daarop dat LIBC se GOT gewoonlik Gedeeltelike RELRO is, so dit kan met 'n arbitrêre skryf verander word. Meer inligting in Targetting libc GOT entries.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)