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

3 KiB

Relro

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Relro

RELRO inasimama kwa Relocation Read-Only, na ni kipengele cha usalama kinachotumika kwenye binaries kudhibiti hatari zinazohusiana na GOT (Global Offset Table) overwrites. Hebu tuchambue dhana hii katika aina zake mbili tofauti kwa uwazi: Partial RELRO na Full RELRO.

Partial RELRO

Partial RELRO inachukua njia rahisi ya kuboresha usalama bila kuathiri sana utendaji wa binary. Kwa kuweka GOT juu ya variables za programu kwenye kumbukumbu, Partial RELRO inalenga kuzuia buffer overflows kufikia na kuharibu GOT.

Hii haizuii GOT kutumiwe kutoka kwa vulnerabilities za kuandika kiholela.

Full RELRO

Full RELRO inaimarisha ulinzi kwa kufanya GOT na sehemu ya .fini_array kuwa soma-tu kabisa. Mara tu binary inapoanza, anwani zote za kazi zinafumbuliwa na kupakiwa kwenye GOT, kisha, GOT inaashiria kama soma-tu, ikizuia uhariri wowote wakati wa muda wa uendeshaji.

Hata hivyo, ubadilishaji na Full RELRO ni kwa upande wa utendaji na wakati wa kuanza. Kwa sababu inahitaji kutatua alama zote za kudumu wakati wa kuanza kabla ya kuashiria GOT kama soma-tu, binaries zenye Full RELRO zilizowezeshwa zinaweza kupata nyakati ndefu za kupakia. Gharama ya ziada ya kuanza hii ndio sababu Full RELRO haielekezwi kwa chaguo-msingi kwenye binaries zote.

Inawezekana kuona ikiwa Full RELRO ime wezeshwa kwenye binary na:

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

Kupita

Ikiwa Full RELRO imewezeshwa, njia pekee ya kuipita ni kupata njia nyingine ambayo haitaji kuandika kwenye jedwali la GOT ili kupata utekelezaji wa aina yoyote.

Tafadhali kumbuka kwamba GOT ya LIBC kawaida ni Partial RELRO, hivyo inaweza kuhaririwa kwa kuandika kwa hiari. Taarifa zaidi katika Kulenga viingilio vya libc GOT.