House of Einherjar
Last updated
Last updated
Lernen und üben Sie AWS-Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen und üben Sie GCP-Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Überprüfen Sie das Beispiel unter https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c
Oder das unter https://guyinatuxedo.github.io/42-house_of_einherjar/house_einherjar_exp/index.html#house-of-einherjar-explanation (möglicherweise müssen Sie den Tcache füllen)
Das Ziel ist es, Speicher fast an einer bestimmten Adresse zuzuweisen.
Erstellen Sie einen gefälschten Chunk, wenn wir einen Chunk zuweisen möchten:
Setzen Sie Zeiger so, dass sie auf sich selbst zeigen, um die Integritätsprüfungen zu umgehen
Ein-Byte-Überlauf mit einem Nullbyte von einem Chunk zum nächsten, um das PREV_INUSE
-Flag zu ändern.
Geben Sie im prev_size
des missbrauchten Off-by-Null-Chunks den Unterschied zwischen ihm selbst und dem gefälschten Chunk an
Die Größe des gefälschten Chunks muss ebenfalls auf die gleiche Größe gesetzt worden sein, um die Integritätsprüfungen zu umgehen
Für den Aufbau dieser Chunks benötigen Sie ein Heap-Leak.
Es wird ein gefälschter Chunk innerhalb eines vom Angreifer kontrollierten Chunks erstellt, der mit fd
und bk
auf den Original-Chunk zeigt, um Schutzmechanismen zu umgehen
2 weitere Chunks (B
und C
) werden allokiert
Durch den Missbrauch des Off-by-One im B
wird das prev in use
-Bit gelöscht und die prev_size
-Daten mit dem Unterschied zwischen dem Ort, an dem der C
-Chunk allokiert ist, und dem zuvor generierten gefälschten A
-Chunk überschrieben
Diese prev_size
und die Größe im gefälschten Chunk A
müssen gleich sein, um die Prüfungen zu umgehen.
Dann wird der Tcache gefüllt
Dann wird C
freigegeben, damit es sich mit dem gefälschten Chunk A
konsolidiert
Dann wird ein neuer Chunk D
erstellt, der im gefälschten A
-Chunk beginnt und den B
-Chunk abdeckt
Das Haus von Einherjar endet hier
Dies kann mit einem Fast-Bin-Angriff oder Tcache-Vergiftung fortgesetzt werden:
Geben Sie B
frei, um es dem Fast-Bin / Tcache hinzuzufügen
Das fd
von B
wird überschrieben, sodass es auf die Zieladresse zeigt und den D
-Chunk missbraucht (da er B
enthält)
Dann werden 2 mallocs durchgeführt und der zweite wird die Zuweisung der Zieladresse sein
Nach dem Freigeben von Zeigern werden sie nicht nullifiziert, sodass es immer noch möglich ist, auf ihre Daten zuzugreifen. Daher wird ein Chunk in den unsortierten Bin platziert und die darin enthaltenen Zeiger geleakt (libc leak) und dann wird ein neuer Heap im unsortierten Bin platziert und eine Heap-Adresse aus dem Zeiger geleakt.
Null-Byte-Überlauf-Bug in strtok
.
Verwenden Sie das House of Einherjar, um eine Situation mit überlappenden Chunks zu erhalten, und beenden Sie sie mit Tcache-Vergiftung, um ein beliebiges Schreib-Primitive zu erhalten.
Lernen und üben Sie AWS-Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen und üben Sie GCP-Hacking: HackTricks Training GCP Red Team Expert (GRTE)