House of Einherjar
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Überprüfe das Beispiel von https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c
Oder das von https://guyinatuxedo.github.io/42-house_of_einherjar/house_einherjar_exp/index.html#house-of-einherjar-explanation (du musst möglicherweise den tcache füllen)
Das Ziel ist es, Speicher an fast jeder spezifischen Adresse zuzuweisen.
Erstelle einen gefälschten Chunk, wenn wir einen Chunk zuweisen wollen:
Setze Zeiger, um auf sich selbst zu zeigen, um Sanity-Checks zu umgehen
Ein-Byte-Überlauf mit einem Null-Byte von einem Chunk zum nächsten, um das PREV_INUSE
-Flag zu modifizieren.
Gib im prev_size
des durch Null missbrauchten Chunks den Unterschied zwischen sich selbst und dem gefälschten Chunk an
Die Größe des gefälschten Chunks muss ebenfalls auf die gleiche Größe gesetzt werden, um Sanity-Checks zu umgehen
Um diese Chunks zu konstruieren, benötigst du einen Heap-Leak.
Ein A
gefälschter Chunk wird innerhalb eines vom Angreifer kontrollierten Chunks erstellt, der mit fd
und bk
auf den ursprünglichen Chunk zeigt, um Schutzmaßnahmen zu umgehen
2 andere Chunks (B
und C
) werden zugewiesen
Missbrauche den Off-by-One im B
, um das prev in use
-Bit zu löschen und die prev_size
-Daten mit dem Unterschied zwischen dem Ort, an dem der C
-Chunk zugewiesen wird, und dem zuvor generierten gefälschten A
-Chunk zu überschreiben
Diese prev_size
und die Größe im gefälschten Chunk A
müssen gleich sein, um Überprü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-Poisoning fortgesetzt werden:
Freigeben von B
, um es zum Fast-Bin / Tcache hinzuzufügen
B
's fd
wird überschrieben, sodass es auf die Zieladresse zeigt, indem der D
-Chunk missbraucht wird (da er B
enthält)
Dann werden 2 Mallocs durchgeführt, und der zweite wird die Zieladresse zuweisen
Nach dem Freigeben von Zeigern werden diese nicht nullifiziert, sodass es weiterhin möglich ist, auf ihre Daten zuzugreifen. Daher wird ein Chunk in den unsortierten Bin gelegt und die Zeiger, die er enthält, werden geleakt (libc leak), und dann wird ein neuer Heap im unsortierten Bin platziert und eine Heap-Adresse von dem Zeiger, den er erhält, geleakt.
Null-Byte-Überlauf-Fehler in strtok
.
Verwende House of Einherjar, um eine Überlappung von Chunks zu erreichen und mit Tcache-Poisoning zu enden, um eine willkürliche Schreibprimitive zu erhalten.
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)