mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-26 22:52:06 +00:00
4.2 KiB
4.2 KiB
Kuća Einherjar
Naučite hakovanje AWS-a od nule do heroja sa htARTE (HackTricks AWS Red Team Expert)!
Drugi načini podrške HackTricks-u:
- Ako želite da vidite vašu kompaniju reklamiranu na HackTricks-u ili preuzmete HackTricks u PDF formatu Proverite PLANOVE ZA PRIJAVU!
- Nabavite zvanični PEASS & HackTricks swag
- Otkrijte Porodicu PEASS, našu kolekciju ekskluzivnih NFT-ova
- Pridružite se 💬 Discord grupi ili telegram grupi ili nas pratite na Twitteru 🐦 @hacktricks_live.
- Podelite svoje hakovanje trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Osnovne informacije
Kod
- Pogledajte 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 off-by-null razliku između njega i lažnog bloka - Veličina lažnog bloka takođe mora biti postavljena na istu veličinu kako bi se zaobišle provere ispravnosti
- Za konstruisanje ovih blokova, biće vam potrebno curenje 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 off by one u
B
bloku, bitprev in use
se čisti i podaciprev_size
se prepisuju sa razlikom između mesta gde je alociran blokC
, do lažnog blokaA
generisanog ranije - 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 pokriti blokB
- Kuća Einherjar se završava ovde
- Ovo se može nastaviti sa brzim bin napadom ili trovanjem Tcache-om:
- 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 procurili su pokazivači koje sadrži (libc curenje) a zatim je novi hip smešten u nesortirani bin i procurila je adresa hipa iz pokazivača koji 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-om kako biste dobili proizvoljno pisanje.