3 KiB
Relro
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLANY SUBSKRYPCYJNE!
- Kup oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud na GitHubie.
Relro
RELRO oznacza Relocation Read-Only i jest funkcją zabezpieczeń stosowaną w plikach binarnych w celu zmniejszenia ryzyka związanego z nadpisywaniem GOT (Global Offset Table). Rozbijmy ten koncept na dwa różne typy dla jasności: Częściowy RELRO i Pełny RELRO.
Częściowy RELRO
Częściowy RELRO stosuje prostsze podejście do zwiększenia bezpieczeństwa bez znacznego wpływu na wydajność binarnego pliku. Poprzez umieszczenie GOT powyżej zmiennych programu w pamięci, Częściowy RELRO ma na celu zapobieganie dotarciu i uszkodzeniu GOT przez przepełnienie bufora.
To nie zapobiega nadużywaniu GOT z podatności na dowolne zapisy.
Pełny RELRO
Pełny RELRO podnosi ochronę poprzez całkowite zablokowanie GOT do odczytu. Gdy binarny plik zaczyna działanie, wszystkie adresy funkcji są rozwiązywane i ładowane do GOT, a następnie GOT jest oznaczane jako tylko do odczytu, skutecznie uniemożliwiając jakiekolwiek modyfikacje podczas działania.
Jednakże, w przypadku Pełnego RELRO, kompromis dotyczy wydajności i czasu uruchamiania. Ponieważ wymaga to rozwiązania wszystkich symboli dynamicznych podczas uruchamiania przed oznaczeniem GOT jako tylko do odczytu, binarne pliki z włączonym Pełnym RELRO mogą doświadczyć dłuższych czasów ładowania. Dodatkowe obciążenie podczas uruchamiania to powód, dla którego Pełny RELRO nie jest domyślnie włączony we wszystkich plikach binarnych.
Można sprawdzić, czy Pełny 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łączone, jedynym sposobem na jego obejście jest znalezienie innego sposobu, który nie wymaga zapisywania w tabeli GOT, aby uzyskać dowolne wykonanie.