4.2 KiB
Relro
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Relro
RELRO oznacza Relocation Read-Only i jest funkcją zabezpieczeń stosowaną w plikach binarnych w celu złagodzenia ryzyka związanego z GOT (Global Offset Table) nadpisaniami. Rozłóżmy ten koncept na dwa wyraźne typy dla jasności: Partial RELRO i Full RELRO.
Partial RELRO
Partial RELRO przyjmuje prostsze podejście do zwiększenia bezpieczeństwa bez znaczącego wpływu na wydajność binarnego pliku. Poprzez umieszczenie GOT powyżej zmiennych programu w pamięci, Partial RELRO ma na celu zapobieżenie przepełnieniom bufora, które mogłyby dotrzeć do GOT i go uszkodzić.
To nie zapobiega nadużywaniu GOT z powodu podatności na dowolne zapisy.
Full RELRO
Full RELRO zwiększa ochronę poprzez uczynienie GOT całkowicie tylko do odczytu. Gdy plik binarny się uruchamia, wszystkie adresy funkcji są rozwiązywane i ładowane w GOT, a następnie GOT jest oznaczany jako tylko do odczytu, co skutecznie zapobiega jakimkolwiek modyfikacjom w czasie wykonywania.
Jednak kompromis związany z Full RELRO dotyczy wydajności i czasu uruchamiania. Ponieważ musi rozwiązać wszystkie dynamiczne symbole podczas uruchamiania przed oznaczeniem GOT jako tylko do odczytu, pliki binarne z włączonym Full RELRO mogą doświadczać dłuższych czasów ładowania. Ten dodatkowy narzut przy uruchamianiu to powód, dla którego Full RELRO nie jest domyślnie włączony we wszystkich plikach binarnych.
Można sprawdzić, czy Full RELRO jest włączony w pliku binarnym za pomocą:
readelf -l /proc/ID_PROC/exe | grep BIND_NOW
Bypass
Jeśli Full RELRO jest włączony, jedynym sposobem na obejście go jest znalezienie innej metody, która nie wymaga zapisu w tabeli GOT, aby uzyskać dowolne wykonanie.
Należy zauważyć, że GOT LIBC jest zazwyczaj Partial RELRO, więc może być modyfikowany za pomocą dowolnego zapisu. Więcej informacji w Targetting libc GOT entries.
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.