hacktricks/binary-exploitation/heap/off-by-one-overflow.md

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:

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:

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:

https://heap-exploitation.dhavalkapil.com/attacks/shrinking_free_chunks

Referências

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks: