mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-01 00:49:40 +00:00
4.6 KiB
4.6 KiB
Estouro por um
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você quiser ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Verifique os PLANOS DE ASSINATURA!
- Obtenha o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.
Informação Básica
Ter apenas acesso a um estouro de 1B permite a um atacante modificar as informações de metadados de tamanho anteriores, permitindo manipular quais chunks são realmente liberados, finalmente gerando um chunk que contém outro chunk legítimo.
Exemplo de Código:
- https://github.com/DhavalKapil/heap-exploitation/blob/d778318b6a14edad18b20421f5a06fa1a6e6920e/assets/files/shrinking_free_chunks.c
- Este ataque não está mais funcionando devido ao uso de Tcaches.
- Além disso, se você tentar abusar dele usando chunks maiores (para que tcaches não estejam envolvidos), você receberá o erro:
malloc(): invalid next size (unsorted)
Objetivo
- Fazer um chunk ser contido dentro de outro chunk, de modo que o acesso de escrita sobre esse segundo chunk permita sobrescrever o contido.
Requisitos
- Estouro por um overflow para modificar as informações de metadados de tamanho anteriores
Ataque
- 3 chunks de memória (a, b, c) são reservados um após o outro. Em seguida, o do meio é liberado. O primeiro contém uma vulnerabilidade de estouro por um e o atacante a abusa com um 0x00 (se o byte anterior fosse 0x10, faria com que o chunk do meio indicasse que é 0x10 menor do que realmente é).
- Em seguida, 2 chunks menores são alocados no chunk liberado do meio (b), no entanto, como
b + b->size
nunca atualiza o chunk c porque o endereço apontado é menor do que deveria. - Em seguida, b1 e c são liberados. Como
c - c->prev_size
ainda aponta para b (agora b1), ambos são consolidados em um único chunk. No entanto, b2 ainda está dentro entre b1 e c. - Finalmente, é feito um novo malloc para recuperar esta área de memória que realmente vai conter b2, permitindo ao proprietário do novo malloc controlar o conteúdo de b2.
Esta imagem explica perfeitamente o ataque:
Referências
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você quiser ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Verifique os PLANOS DE ASSINATURA!
- Obtenha o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.