House of Einherjar
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)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
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.
Osnovne informacije
Kod
- Proverite primer sa https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c
- Ili onaj sa https://guyinatuxedo.github.io/42-house_of_einherjar/house_einherjar_exp/index.html#house-of-einherjar-explanation (možda ćete morati da popunite tcache)
Cilj
- Cilj je alocirati memoriju na gotovo bilo kojoj specifičnoj adresi.
Zahtevi
- Kreirati lažni chunk kada želimo da alociramo chunk:
- Postaviti pokazivače da upućuju na sebe kako bi se zaobišli provere
- Overflow od jednog bajta sa null bajtom iz jednog chunca u sledeći kako bi se modifikovao
PREV_INUSEflag. - Naznačiti u
prev_sizelažnog chunca razliku između njega i lažnog chunca - Veličina lažnog chunca takođe mora biti postavljena na istu veličinu kako bi se zaobišle provere
- Za konstrukciju ovih chunkova, biće vam potreban heap leak.
Napad
Alažni chunk se kreira unutar chunca koji kontroliše napadač, upućujući safdibkna originalni chunk kako bi se zaobišle zaštite- 2 druga chunca (
BiC) se alociraju - Zloupotrebljavajući off by one u
B,prev in usebit se čisti iprev_sizepodaci se prepisuju sa razlikom između mesta gde je alociranCchunk, do lažnogAchunca generisanog pre - Ovaj
prev_sizei veličina u lažnom chunkuAmoraju biti iste kako bi se zaobišle provere. - Zatim, tcache se puni
- Zatim,
Cse oslobađa kako bi se konsolidovao sa lažnim chunkomA - Zatim, novi chunk
Dse kreira koji će početi u lažnomAchunku i pokritiBchunk - Kuća Einherjar se ovde završava
- Ovo se može nastaviti brzim bin napadom ili Tcache trovanjem:
- Oslobodite
Bda ga dodate u brzi bin / Tcache B'sfdse prepisuje tako da pokazuje na ciljnu adresu zloupotrebljavajućiDchunk (pošto sadržiBunutar)- Zatim, vrše se 2 malloc-a i drugi će biti alociranje ciljne adrese
Reference i drugi primeri
- https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c
- CTF https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house_of_einherjar/#2016-seccon-tinypad
- Nakon oslobađanja pokazivača, oni nisu nullifikovani, tako da je još uvek moguće pristupiti njihovim podacima. Stoga se chunk postavlja u nesortirani bin i curi pokazivače koje sadrži (libc leak) i zatim se nova heap postavlja na nesortirani bin i curi adresu heap-a iz pokazivača koji dobija.
- baby-talk. DiceCTF 2024
- Null-byte overflow greška u
strtok. - Koristite House of Einherjar da dobijete situaciju preklapanja chunkova i završite sa Tcache trovanjem kako biste dobili proizvoljnu write primitivu.
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)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
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.
HackTricks