hacktricks/binary-exploitation/libc-heap/house-of-force.md

7.9 KiB

House of Force

{% 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
{% endhint %}

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 é ser capaz de 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, pois 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:

// 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

{% 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
{% endhint %}