House of Force

Reading time: 5 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks

Grundinformationen

Code

  • Diese Technik wurde gepatcht (hier) und erzeugt diesen Fehler: malloc(): corrupted top size
  • Du kannst den Code von hier ausprobieren, um ihn zu testen, wenn du möchtest.

Ziel

  • Das Ziel dieses Angriffs ist es, einen Chunk an einer bestimmten Adresse zuzuweisen.

Anforderungen

  • Ein Überlauf, der es ermöglicht, die Größe des Top-Chunk-Headers zu überschreiben (z.B. -1).
  • In der Lage sein, die Größe der Heap-Zuweisung zu kontrollieren.

Angriff

Wenn ein Angreifer einen Chunk an der Adresse P zuweisen möchte, um einen Wert hier zu überschreiben. Er beginnt damit, die Größe des Top-Chunks mit -1 zu überschreiben (vielleicht mit einem Überlauf). Dies stellt sicher, dass malloc mmap für keine Zuweisung verwenden wird, da der Top-Chunk immer genügend Platz haben wird.

Dann berechne den Abstand zwischen der Adresse des Top-Chunks und dem Zielbereich, der zugewiesen werden soll. Dies liegt daran, dass eine malloc mit dieser Größe durchgeführt wird, um den Top-Chunk an diese Position zu verschieben. So kann der Unterschied/die Größe leicht berechnet werden:

c
// From https://github.com/shellphish/how2heap/blob/master/glibc_2.27/house_of_force.c#L59C2-L67C5
/*
* The evil_size is calulcated as (nb is the number of bytes requested + space for metadata):
* new_top = old_top + nb
* nb = new_top - old_top
* req + 2sizeof(long) = new_top - old_top
* req = new_top - old_top - 2sizeof(long)
* req = target - 2sizeof(long) - old_top - 2sizeof(long)
* req = target - old_top - 4*sizeof(long)
*/

Daher wird die Größe von target - old_top - 4*sizeof(long) (die 4 longs sind wegen der Metadaten des oberen Chunks und des neuen Chunks bei der Zuweisung) zugewiesen, was den oberen Chunk an die Adresse verschiebt, die wir überschreiben möchten.
Dann wird ein weiteres malloc durchgeführt, um einen Chunk an der Zieladresse zu erhalten.

Referenzen & Weitere Beispiele

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks