3.2 KiB
Relro
Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!
Ander maniere om HackTricks te ondersteun:
- As jy wil sien dat jou maatskappy geadverteer word in HackTricks of HackTricks aflaai in PDF-formaat Kyk na die INSKRYWINGSPLANNE!
- Kry die amptelike PEASS & HackTricks swag
- Ontdek Die PEASS Familie, ons versameling eksklusiewe NFTs
- Sluit aan by die 💬 Discord-groep of die telegram-groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel jou haktruuks deur PR's in te dien by die HackTricks en HackTricks Cloud github-opslag.
Relro
RELRO staan vir Relocation Read-Only, en dit is 'n veiligheidskenmerk wat in binêre lêers gebruik word om die risiko's wat verband hou met GOT (Global Offset Table) oorskrywings te verminder. Laat ons die konsep opbreek in sy twee onderskeie tipes vir duidelikheid: Gedeeltelike RELRO en Volledige RELRO.
Gedeeltelike RELRO
Gedeeltelike RELRO neem 'n eenvoudiger benadering om die veiligheid te verbeter sonder om die binêre lêer se prestasie aansienlik te beïnvloed. Deur die GOT bo die program se veranderlikes in die geheue te posisioneer, mik Gedeeltelike RELRO daarop om te voorkom dat buffer-oorvloeiings die GOT bereik en dit beskadig.
Dit voorkom nie dat die GOT misbruik word deur willekeurige skryf kwesbaarhede nie.
Volledige RELRO
Volledige RELRO verhoog die beskerming deur die GOT en .fini_array afdeling heeltemal alleen-lees te maak. Wanneer die binêre lêer begin, word al die funksie-adresse opgelos en in die GOT gelaai, daarna word die GOT as alleen-lees gemerk, wat enige wysigings daaraan tydens uitvoering voorkom.
Die afweging met Volledige RELRO is egter in terme van prestasie en aanvangstyd. Omdat dit al die dinamiese simbole by aanvang moet oplos voordat die GOT as alleen-lees gemerk word, kan binêre lêers met Volledige RELRO wat geaktiveer is, langer laaitye ervaar. Hierdie addisionele aanvangsoorskot is waarom Volledige RELRO nie standaard in alle binêre lêers geaktiveer word nie.
Dit is moontlik om te sien of Volledige RELRO geaktiveer is in 'n binêre lêer met:
readelf -l /proc/ID_PROC/exe | grep BIND_NOW
Omgang
Indien Volle RELRO geaktiveer is, is die enigste manier om dit te omseil om 'n ander manier te vind wat nie vereis dat daar in die GOT-tabel geskryf word om willekeurige uitvoering te kry nie.
Let daarop dat LIBC se GOT gewoonlik Gedeeltelike RELRO is, sodat dit verander kan word met 'n willekeurige skryf. Meer inligting in Mikpunt libc GOT inskrywings.