House of Force

Reading time: 5 minutes

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks

Podstawowe informacje

Kod

  • Ta technika została załatana (tutaj) i generuje ten błąd: malloc(): corrupted top size
  • Możesz spróbować kodu stąd, aby go przetestować, jeśli chcesz.

Cel

  • Celem tego ataku jest możliwość przydzielenia kawałka pamięci pod konkretnym adresem.

Wymagania

  • Przepełnienie, które pozwala na nadpisanie rozmiaru nagłówka górnego kawałka (np. -1).
  • Możliwość kontrolowania rozmiaru przydzielania pamięci na stercie.

Atak

Jeśli atakujący chce przydzielić kawałek pamięci pod adresem P, aby nadpisać wartość tutaj. Zaczyna od nadpisania rozmiaru górnego kawałka -1 (może za pomocą przepełnienia). To zapewnia, że malloc nie będzie używał mmap do żadnego przydzielania, ponieważ górny kawałek zawsze będzie miał wystarczająco dużo miejsca.

Następnie oblicza odległość między adresem górnego kawałka a docelową przestrzenią do przydzielenia. Dzieje się tak, ponieważ malloc z tym rozmiarem zostanie wykonany w celu przeniesienia górnego kawałka na tę pozycję. W ten sposób różnica/rozmiar może być łatwo obliczona:

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

Zatem, przydzielenie rozmiaru target - old_top - 4*sizeof(long) (4 longi są potrzebne z powodu metadanych górnego kawałka i nowego kawałka podczas przydzielania) przeniesie górny kawałek do adresu, który chcemy nadpisać.
Następnie, wykonaj kolejny malloc, aby uzyskać kawałek pod docelowym adresem.

References & Other Examples

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks