House of Force

Reading time: 5 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks

Osnovne informacije

Kod

  • Ova tehnika je zakrpljena (ovde) i proizvodi ovu grešku: malloc(): corrupted top size
  • Možete probati kod odavde da ga testirate ako želite.

Cilj

  • Cilj ovog napada je da se omogući alokacija dela u specifičnoj adresi.

Zahtevi

  • Overflow koji omogućava prepisivanje veličine zaglavlja gornjeg dela (npr. -1).
  • Mogućnost kontrole veličine alokacije na heap-u.

Napad

Ako napadač želi da alocira deo na adresi P da bi prepisao vrednost ovde. Počinje prepisivanjem veličine gornjeg dela sa -1 (možda uz pomoć overflow-a). Ovo osigurava da malloc neće koristiti mmap za bilo koju alokaciju jer će gornji deo uvek imati dovoljno prostora.

Zatim, izračunajte razdaljinu između adrese gornjeg dela i ciljnog prostora za alokaciju. To je zato što će se malloc sa tom veličinom izvršiti kako bi se gornji deo pomerio na tu poziciju. Ovako se razlika/veličina može lako izračunati:

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

Zato, alociranje veličine target - old_top - 4*sizeof(long) (4 long-a su zbog metapodataka gornjeg dela i novog dela kada se alocira) će pomeriti gornji deo na adresu koju želimo da prepišemo.
Zatim, uradite još jedan malloc da dobijete deo na ciljnoj adresi.

References & Other Examples

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks