House of Force

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)

Support HackTricks

Informações Básicas

Código

  • Esta técnica foi corrigida (aqui) e produz este erro: malloc(): corrupted top size
  • Você pode tentar o código daqui para testá-lo se quiser.

Objetivo

  • O objetivo deste ataque é conseguir alocar um chunk em um endereço específico.

Requisitos

  • Um overflow que permita sobrescrever o tamanho do cabeçalho do top chunk (por exemplo, -1).
  • Ser capaz de controlar o tamanho da alocação do heap.

Ataque

Se um atacante quiser alocar um chunk no endereço P para sobrescrever um valor aqui. Ele começa sobrescrevendo o tamanho do top chunk com -1 (talvez com um overflow). Isso garante que malloc não usará mmap para nenhuma alocação, já que o Top chunk sempre terá espaço suficiente.

Em seguida, calcule a distância entre o endereço do top chunk e o espaço alvo para alocar. Isso ocorre porque uma malloc com esse tamanho será realizada para mover o top chunk para essa posição. É assim que a diferença/tamanho pode ser facilmente calculada:

c
// From https://github.com/shellphish/how2heap/blob/master/glibc_2.27/house_of_force.c#L59C2-L67C5
/*
* The evil_size is calulcated as (nb is the number of bytes requested + space for metadata):
* new_top = old_top + nb
* nb = new_top - old_top
* req + 2sizeof(long) = new_top - old_top
* req = new_top - old_top - 2sizeof(long)
* req = target - 2sizeof(long) - old_top - 2sizeof(long)
* req = target - old_top - 4*sizeof(long)
*/

Portanto, alocar um tamanho de target - old_top - 4*sizeof(long) (os 4 longs são devido aos metadados do chunk superior e do novo chunk quando alocado) moverá o chunk superior para o endereço que queremos sobrescrever.
Em seguida, faça outro malloc para obter um chunk no endereço alvo.

Referências e Outros Exemplos

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)

Support HackTricks