hacktricks/binary-exploitation/heap/house-of-force.md

7.2 KiB

Maison de la Force

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert en équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks:

Informations de Base

Code

  • Cette technique a été corrigée (ici) et produit cette erreur : malloc(): corrupted top size
  • Vous pouvez essayer le code d'ici pour le tester si vous le souhaitez.

Objectif

  • L'objectif de cette attaque est de pouvoir allouer un chunk à une adresse spécifique.

Exigences

  • Un débordement qui permet de remplacer la taille de l'en-tête du chunk supérieur (par exemple, -1).
  • Pouvoir contrôler la taille de l'allocation du tas

Attaque

Si un attaquant souhaite allouer un chunk à l'adresse P pour remplacer une valeur ici. Il commence par remplacer la taille du chunk supérieur par -1 (peut-être avec un débordement). Cela garantit que malloc n'utilisera pas mmap pour une allocation quelconque car le chunk supérieur aura toujours suffisamment d'espace.

Ensuite, calculez la distance entre l'adresse du chunk supérieur et l'espace cible à allouer. Cela est nécessaire car un malloc de cette taille sera effectué pour déplacer le chunk supérieur à cette position. Voici comment la différence/taille peut être facilement calculée:

// 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)
*/

Par conséquent, allouer une taille de cible - old_top - 4*sizeof(long) (les 4 longs sont dus aux métadonnées du chunk supérieur et du nouveau chunk lors de l'allocation) déplacera le chunk supérieur à l'adresse que nous voulons écraser. Ensuite, effectuez un autre malloc pour obtenir un chunk contenant le début des données à écrire à l'adresse cible.

Références et Autres Exemples