Relro

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Relro

RELRO steht für Relocation Read-Only und ist eine Sicherheitsfunktion, die in Binärdateien verwendet wird, um die mit GOT (Global Offset Table)-Überschreibungen verbundenen Risiken zu mindern. Lassen Sie uns das Konzept in seine zwei verschiedenen Typen für Klarheit aufteilen: Partial RELRO und Full RELRO.

Partial RELRO

Partial RELRO verfolgt einen einfacheren Ansatz, um die Sicherheit zu verbessern, ohne die Leistung der Binärdatei wesentlich zu beeinträchtigen. Durch Platzierung der GOT über den Variablen des Programms im Speicher zielt Partial RELRO darauf ab, Pufferüberläufe daran zu hindern, die GOT zu erreichen und zu beschädigen.

Dies verhindert nicht, dass die GOT bei beliebigen Schreibvorgängen missbraucht wird.

Full RELRO

Full RELRO erhöht den Schutz, indem die GOT und der .fini_array-Abschnitt vollständig schreibgeschützt gemacht werden. Sobald die Binärdatei gestartet wird, werden alle Funktionsadressen aufgelöst und im GOT geladen, dann wird die GOT als schreibgeschützt markiert, wodurch effektiv verhindert wird, dass während der Laufzeit Änderungen daran vorgenommen werden.

Der Kompromiss bei Full RELRO liegt jedoch in Bezug auf Leistung und Startzeit. Da alle dynamischen Symbole beim Start aufgelöst werden müssen, bevor die GOT als schreibgeschützt markiert wird, können Binärdateien mit aktiviertem Full RELRO längere Ladezeiten haben. Dieser zusätzliche Startaufwand ist der Grund, warum Full RELRO nicht standardmäßig in allen Binärdateien aktiviert ist.

Es ist möglich zu überprüfen, ob Full RELRO in einer Binärdatei aktiviert ist:

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

Umgehen

Wenn Full RELRO aktiviert ist, ist der einzige Weg, es zu umgehen, einen anderen Weg zu finden, der keine Schreibvorgänge in der GOT-Tabelle erfordert, um beliebige Ausführung zu erlangen.

Beachten Sie, dass die GOT von LIBC normalerweise Partial RELRO ist, daher kann sie mit einem beliebigen Schreibvorgang modifiziert werden. Weitere Informationen finden Sie unter Zielsetzung von libc GOT-Einträgen.

Last updated