mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-25 22:20:43 +00:00
4.2 KiB
4.2 KiB
Kuća Einherjar
{% hint style="success" %}
Naučite i vežbajte hakovanje AWS:HackTricks Obuka AWS Crveni Tim Stručnjak (ARTE)
Naučite i vežbajte hakovanje GCP: HackTricks Obuka GCP Crveni Tim Stručnjak (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
- Proverite primer sa https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c
- Ili sa https://guyinatuxedo.github.io/42-house_of_einherjar/house_einherjar_exp/index.html#house-of-einherjar-explanation (možda će biti potrebno popuniti tcache)
Cilj
- Cilj je alocirati memoriju na gotovo bilo kojoj određenoj adresi.
Zahtevi
- Kreirati lažan blok kada želimo da alociramo blok:
- Postaviti pokazivače da pokazuju na sebe kako bi se zaobišle provere ispravnosti
- Prekoračenje za jedan bajt sa nulom iz jednog bloka u sledeći kako bi se izmenila oznaka
PREV_INUSE
- Ukazati u
prev_size
zloupotrebljenog bloka sa nulom razliku između njega i lažnog bloka - Veličina lažnog bloka takođe mora biti postavljena iste veličine kako bi se zaobišle provere ispravnosti
- Za konstruisanje ovih blokova, biće vam potrebno procurivanje hipa.
Napad
- Kreiran je
A
lažan blok unutar bloka koji kontroliše napadač pokazujući safd
ibk
na originalni blok kako bi se zaobišle zaštite - Alocirana su još 2 bloka (
B
iC
) - Zloupotrebom prekoračenja za jedan u bloku
B
, bitprev in use
se čisti i podaciprev_size
se prepisuju sa razlikom između mesta gde je alociran blokC
, do lažnog blokaA
koji je generisan pre - Ovaj
prev_size
i veličina u lažnom blokuA
moraju biti iste kako bi se zaobišle provere. - Zatim, tcache se popunjava
- Zatim,
C
se oslobađa kako bi se konsolidovao sa lažnim blokomA
- Zatim, kreira se novi blok
D
koji će početi u lažnom blokuA
i pokrivati blokB
- Kuća Einherjar se završava ovde
- Ovo se može nastaviti sa brzim bin napadom ili trovanjem Tcache-a:
- Oslobodite
B
da ga dodate u brzi bin / Tcache fd
odB
se prepisuje tako da pokazuje na ciljnu adresu zloupotrebom blokaD
(jer sadržiB
unutra)- Zatim, vrše se 2 alokacije i druga će alocirati ciljnu adresu
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, njihovi podaci nisu anulirani, pa je i dalje moguće pristupiti njihovim podacima. Stoga je blok smešten u nesortirani bin i procurio je pokazivače koje sadrži (libc procurivanje) a zatim je novi hip smešten u nesortirani bin i procurio je adresu hipa iz pokazivača koje dobija.
- baby-talk. DiceCTF 2024
- Bag prekoračenja nulom u
strtok
. - Koristite Kuću Einherjar da biste dobili situaciju preklapanja blokova i završili sa trovanjem Tcache-a kako biste dobili proizvoljno pisanje.