House of Einherjar
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.
Basic Information
Code
- Check the example from https://github.com/shellphish/how2heap/blob/master/glibc_2.35/house_of_einherjar.c
- Or the one from https://guyinatuxedo.github.io/42-house_of_einherjar/house_einherjar_exp/index.html#house-of-einherjar-explanation (you might need to fill the tcache)
Goal
- ๋ชฉํ๋ ๊ฑฐ์ ๋ชจ๋ ํน์ ์ฃผ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ ๊ฒ์ ๋๋ค.
Requirements
- ์ฒญํฌ๋ฅผ ํ ๋นํ๊ณ ์ถ์ ๋ ๊ฐ์ง ์ฒญํฌ๋ฅผ ์์ฑํฉ๋๋ค:
- ํฌ์ธํฐ๋ฅผ ์๊ธฐ ์์ ์ ๊ฐ๋ฆฌํค๋๋ก ์ค์ ํ์ฌ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ๋ฅผ ์ฐํํฉ๋๋ค.
- ํ ๋ฐ์ดํธ ์ค๋ฒํ๋ก์ฐ๋ฅผ ์ฌ์ฉํ์ฌ ํ ์ฒญํฌ์์ ๋ค์ ์ฒญํฌ๋ก null ๋ฐ์ดํธ๋ฅผ ์ ์กํ์ฌ
PREV_INUSEํ๋๊ทธ๋ฅผ ์์ ํฉ๋๋ค. - null๋ก ์คํ์
๋ ์ฒญํฌ์
prev_size์ ์์ ๊ณผ ๊ฐ์ง ์ฒญํฌ ๊ฐ์ ์ฐจ์ด๋ฅผ ํ์ํฉ๋๋ค. - ๊ฐ์ง ์ฒญํฌ์ ํฌ๊ธฐ๋ ๋ฌด๊ฒฐ์ฑ ๊ฒ์ฌ๋ฅผ ์ฐํํ๊ธฐ ์ํด ๋์ผํ ํฌ๊ธฐ๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
- ์ด๋ฌํ ์ฒญํฌ๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด ํ ๋์๊ฐ ํ์ํฉ๋๋ค.
Attack
- ๊ณต๊ฒฉ์๊ฐ ์ ์ดํ๋ ์ฒญํฌ ๋ด๋ถ์
A๊ฐ์ง ์ฒญํฌ๊ฐ ์์ฑ๋์ดfd์bk๊ฐ ์๋ ์ฒญํฌ๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ํ์ฌ ๋ณดํธ๋ฅผ ์ฐํํฉ๋๋ค. - 2๊ฐ์ ๋ค๋ฅธ ์ฒญํฌ(
B์C)๊ฐ ํ ๋น๋ฉ๋๋ค. B์์ ํ ๋ฐ์ดํธ๋ฅผ ๋จ์ฉํ์ฌprev in use๋นํธ๋ฅผ ์ง์ฐ๊ณprev_size๋ฐ์ดํฐ๋ฅผC์ฒญํฌ๊ฐ ํ ๋น๋ ์์น์ ์ด์ ์ ์์ฑ๋ ๊ฐ์งA์ฒญํฌ ๊ฐ์ ์ฐจ์ด๋ก ๋ฎ์ด์๋๋ค.- ์ด
prev_size์ ๊ฐ์ง ์ฒญํฌA์ ํฌ๊ธฐ๋ ๊ฒ์ฌ๋ฅผ ์ฐํํ๊ธฐ ์ํด ๋์ผํด์ผ ํฉ๋๋ค. - ๊ทธ๋ฐ ๋ค์, tcache๊ฐ ์ฑ์์ง๋๋ค.
- ๊ทธ๋ฐ ๋ค์,
C๊ฐ ํด์ ๋์ด ๊ฐ์ง ์ฒญํฌA์ ํตํฉ๋ฉ๋๋ค. - ๊ทธ๋ฐ ๋ค์, ๊ฐ์ง
A์ฒญํฌ์์ ์์ํ์ฌB์ฒญํฌ๋ฅผ ๋ฎ๋ ์๋ก์ด ์ฒญํฌD๊ฐ ์์ฑ๋ฉ๋๋ค. - ์ฌ๊ธฐ์ Einherjar์ ์ง์ด ๋๋ฉ๋๋ค.
- ์ด๋ ๋น ๋ฅธ ๋น ๊ณต๊ฒฉ ๋๋ Tcache ์ค๋ ์ผ๋ก ๊ณ์๋ ์ ์์ต๋๋ค:
B๋ฅผ ํด์ ํ์ฌ ๋น ๋ฅธ ๋น / Tcache์ ์ถ๊ฐํฉ๋๋ค.B์fd๊ฐ ๋ฎ์ด์์์ ธ ๋ชฉํ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋๋ก ํ์ฌD์ฒญํฌ๋ฅผ ๋จ์ฉํฉ๋๋ค(๋ด๋ถ์B๊ฐ ํฌํจ๋์ด ์์).- ๊ทธ๋ฐ ๋ค์, 2๊ฐ์ malloc์ด ์ํ๋๋ฉฐ ๋ ๋ฒ์งธ malloc์ ๋ชฉํ ์ฃผ์๋ฅผ ํ ๋นํ๊ฒ ๋ฉ๋๋ค.
References and other examples
- 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
- ํฌ์ธํฐ๋ฅผ ํด์ ํ ํ nullํ๋์ง ์์ผ๋ฏ๋ก ์ฌ์ ํ ํด๋น ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ฒญํฌ๊ฐ ์ ๋ ฌ๋์ง ์์ ๋น์ ๋ฐฐ์น๋๊ณ ํฌํจ๋ ํฌ์ธํฐ๊ฐ ๋์ถ๋ฉ๋๋ค(libc leak) ๊ทธ๋ฆฌ๊ณ ์๋ก์ด ํ์ด ์ ๋ ฌ๋์ง ์์ ๋น์ ๋ฐฐ์น๋์ด ์ป์ ํฌ์ธํฐ์์ ํ ์ฃผ์๊ฐ ๋์ถ๋ฉ๋๋ค.
- baby-talk. DiceCTF 2024
strtok์์ null ๋ฐ์ดํธ ์ค๋ฒํ๋ก์ฐ ๋ฒ๊ทธ.- House of Einherjar๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒน์น๋ ์ฒญํฌ ์ํฉ์ ๋ง๋ค๊ณ Tcache ์ค๋ ์ผ๋ก ์์ ์ฐ๊ธฐ ์์๋ฅผ ์ป์ต๋๋ค.
Tip
AWS ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training AWS Red Team Expert (ARTE)
GCP ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:HackTricks Training GCP Red Team Expert (GRTE)
Azure ํดํน ๋ฐฐ์ฐ๊ธฐ ๋ฐ ์ฐ์ตํ๊ธฐ:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks ์ง์ํ๊ธฐ
- ๊ตฌ๋ ๊ณํ ํ์ธํ๊ธฐ!
- **๐ฌ ๋์ค์ฝ๋ ๊ทธ๋ฃน ๋๋ ํ ๋ ๊ทธ๋จ ๊ทธ๋ฃน์ ์ฐธ์ฌํ๊ฑฐ๋ ํธ์ํฐ ๐ฆ @hacktricks_live๋ฅผ ํ๋ก์ฐํ์ธ์.
- HackTricks ๋ฐ HackTricks Cloud ๊นํ๋ธ ๋ฆฌํฌ์งํ ๋ฆฌ์ PR์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


