hacktricks/binary-exploitation/libc-heap/house-of-einherjar.md

5.6 KiB

Casa di Einherjar

{% hint style="success" %} Impara e pratica l'Hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)

Sostieni HackTricks
{% endhint %}

Informazioni di Base

Codice

Obiettivo

  • L'obiettivo è allocare memoria in quasi ogni indirizzo specifico.

Requisiti

  • Creare un chunk falso quando vogliamo allocare un chunk:
  • Impostare i puntatori per puntare a se stessi per aggirare i controlli di integrità
  • Overflow di un byte con un byte nullo da un chunk al successivo per modificare il flag PREV_INUSE.
  • Indicare nel prev_size del chunk abusato off-by-null la differenza tra se stesso e il chunk falso
  • Anche la dimensione del chunk falso deve essere impostata alla stessa dimensione per aggirare i controlli di integrità
  • Per costruire questi chunk, avrai bisogno di una fuga di memoria dell'heap.

Attacco

  • Viene creato un chunk falso all'interno di un chunk controllato dall'attaccante puntando con fd e bk al chunk originale per aggirare le protezioni
  • Vengono allocati altri 2 chunk (B e C)
  • Sfruttando l'off-by-one nel chunk B, il bit prev in use viene pulito e i dati prev_size vengono sovrascritti con la differenza tra il luogo in cui è allocato il chunk C e il chunk falso A generato prima
  • Questo prev_size e la dimensione nel chunk falso A devono essere uguali per aggirare i controlli.
  • Quindi, la tcache viene riempita
  • Poi, C viene liberato in modo che si consolidi con il chunk falso A
  • Poi, viene creato un nuovo chunk D che inizierà nel chunk falso A e coprirà il chunk B
  • La casa di Einherjar finisce qui
  • Questo può essere continuato con un attacco al fast bin o con l'avvelenamento della Tcache:
  • Liberare B per aggiungerlo al fast bin / Tcache
  • Il fd di B viene sovrascritto facendolo puntare all'indirizzo di destinazione sfruttando il chunk D (poiché contiene B all'interno)
  • Poi, vengono fatti 2 malloc e il secondo sarà l'allocazione dell'indirizzo di destinazione

Riferimenti e altri esempi

{% hint style="success" %} Impara e pratica l'Hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)

Sostieni HackTricks
{% endhint %}