House of Force

Reading time: 5 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

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 d'écraser la taille de l'en-tête du chunk supérieur (par exemple -1).
  • Être capable de contrôler la taille de l'allocation de la heap.

Attaque

Si un attaquant veut allouer un chunk à l'adresse P pour écraser une valeur ici. Il commence par écraser la taille du chunk supérieur avec -1 (peut-être avec un débordement). Cela garantit que malloc n'utilisera pas mmap pour toute allocation 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 dû au fait qu'un malloc avec cette taille sera effectué afin de déplacer le chunk supérieur à cette position. Voici comment la différence/taille peut être facilement calculée :

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

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

Références et autres exemples

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)

Soutenir HackTricks