House of Force

Lernen Sie AWS-Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen Sie GCP-Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Unterstützen Sie HackTricks

Grundlegende Informationen

Code

  • Diese Technik wurde gepatcht (hier) und führt zu diesem Fehler: malloc(): corrupted top size

  • Sie können den Code von hier ausprobieren, um ihn zu testen, wenn Sie möchten.

Ziel

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

Anforderungen

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

  • Die Fähigkeit, die Größe der Heap-Allokation zu kontrollieren.

Angriff

Wenn ein Angreifer einen Chunk an der Adresse P allozieren möchte, um einen Wert hier zu überschreiben, beginnt er damit, die Top-Chunk-Größe mit -1 zu überschreiben (möglicherweise mit einem Überlauf). Dies stellt sicher, dass malloc keine mmap für eine beliebige Allokation verwendet, da der Top-Chunk immer genügend Platz haben wird.

Berechnen Sie dann den Abstand zwischen der Adresse des Top-Chunks und dem Zielraum zur Allokation. 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/Größe leicht berechnet werden:

// 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 Zuweisung einer Größe von Ziel - old_top - 4*sizeof(long) (die 4 longs sind aufgrund der Metadaten des Top-Chunks und des neuen Chunks bei der Zuweisung) den Top-Chunk an die Adresse verschieben, die wir überschreiben möchten. Dann wird ein weiteres malloc durchgeführt, um einen Chunk an der Zieladresse zu erhalten.

Referenzen & Weitere Beispiele

Last updated