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

5.8 KiB

Maison d'Einherjar

{% hint style="success" %} Apprenez et pratiquez le piratage AWS :Formation HackTricks AWS Red Team Expert (ARTE)
Apprenez et pratiquez le piratage GCP : Formation HackTricks GCP Red Team Expert (GRTE)

Soutenez HackTricks
{% endhint %}

Informations de base

Code

Objectif

  • L'objectif est d'allouer de la mémoire à presque n'importe quelle adresse spécifique.

Exigences

  • Créer un faux chunk lorsque nous voulons allouer un chunk :
  • Définir des pointeurs pour pointer vers lui-même pour contourner les vérifications de cohérence
  • Débordement d'un octet avec un octet nul d'un chunk à l'autre pour modifier le drapeau PREV_INUSE.
  • Indiquer dans la prev_size du chunk abusé par le débordement d'un octet la différence entre lui-même et le faux chunk
  • La taille du faux chunk doit également avoir été définie de la même taille pour contourner les vérifications de cohérence
  • Pour construire ces chunks, vous aurez besoin d'une fuite de tas.

Attaque

  • Un faux chunk est créé à l'intérieur d'un chunk contrôlé par l'attaquant pointant avec fd et bk vers le chunk d'origine pour contourner les protections
  • 2 autres chunks (B et C) sont alloués
  • En abusant du débordement d'un octet dans le chunk B, le bit prev in use est nettoyé et les données prev_size sont écrasées avec la différence entre l'endroit où le chunk C est alloué et le faux chunk A généré précédemment
  • Ce prev_size et la taille dans le faux chunk A doivent être les mêmes pour contourner les vérifications.
  • Ensuite, le tcache est rempli
  • Ensuite, C est libéré pour se consolider avec le faux chunk A
  • Ensuite, un nouveau chunk D est créé qui commencera dans le faux chunk A et couvrira le chunk B
  • La maison d'Einherjar se termine ici
  • Cela peut être poursuivi avec une attaque de fast bin ou un empoisonnement de Tcache :
  • Libérer B pour l'ajouter au fast bin / Tcache
  • Le fd de B est écrasé pour le faire pointer vers l'adresse cible en abusant du chunk D (car il contient B à l'intérieur)
  • Ensuite, 2 mallocs sont effectués et le deuxième va allouer l'adresse cible

Références et autres exemples

{% hint style="success" %} Apprenez et pratiquez le piratage AWS :Formation HackTricks AWS Red Team Expert (ARTE)
Apprenez et pratiquez le piratage GCP : Formation HackTricks GCP Red Team Expert (GRTE)

Soutenez HackTricks
{% endhint %}