Relro
Reading time: 3 minutes
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Relro
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 oorloop van veranderlikes in die BSS (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
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 lêers met Deeltelike RELRO.
Volledige 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 lêers met Volledige RELRO geaktiveer langer laai tye ervaar. Hierdie ekstra opstartlas is waarom Volledige RELRO nie standaard in alle binêre lêers geaktiveer is nie.
Dit is moontlik om te sien of Volledige RELRO geaktiveer is in 'n binêre met:
readelf -l /proc/ID_PROC/exe | grep BIND_NOW
Bypass
As Full RELRO geaktiveer is, is die enigste manier om dit te omseil om 'n ander manier te vind wat nie nodig is om in die GOT tabel te skryf om arbitrêre uitvoering te verkry nie.
Let daarop dat LIBC se GOT gewoonlik Partial RELRO is, so dit kan met 'n arbitrêre skrywe gewysig word. Meer inligting in Targetting libc GOT entries.
tip
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.