House of Orange
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
- https://github.com/shellphish/how2heap/blob/master/glibc_2.23/house_of_orange.c์์ ์์ ๋ฅผ ์ฐพ์ผ์ธ์.
- ์ด patch์์ ์ทจ์ฝ์ ์ด ์์ ๋์์ผ๋ฏ๋ก ๋ ์ด์ ์๋ํ์ง ์์ต๋๋ค (2.26 ์ด์ ์์ ์๋).
- https://guyinatuxedo.github.io/43-house_of_orange/house_orange_exp/index.html์์ ๋ ๋ง์ ์ฃผ์์ด ์๋ ๋์ผํ ์์ ๋ฅผ ํ์ธํ์ธ์.
Goal
malloc_printerrํจ์ ์ ์ฉ
Requirements
- ์์ ์ฒญํฌ ํฌ๊ธฐ ๋ฎ์ด์ฐ๊ธฐ
- Libc ๋ฐ ํ ๋์
Background
์ด ์์ ์์ ํ์ํ ๋ฐฐ๊ฒฝ:
๋ฌธ์ ๋, ์ด์ ๋ฒ์ ์ libc์์ malloc_printerr ํจ์๊ฐ ํธ์ถ๋๋ฉด _IO_list_all์ ์ ์ฅ๋ _IO_FILE ๊ตฌ์กฐ์ฒด ๋ชฉ๋ก์ ๋ฐ๋ณตํ๊ณ ์ค์ ๋ก ๊ทธ ๊ตฌ์กฐ์ฒด์ ๋ช
๋ น์ด ํฌ์ธํฐ๋ฅผ ์คํํ์ต๋๋ค.
์ด ๊ณต๊ฒฉ์ ๊ฐ์ง _IO_FILE ๊ตฌ์กฐ์ฒด๋ฅผ ์์กฐํ์ฌ _IO_list_all์ ๊ธฐ๋กํ๊ณ malloc_printerr๋ฅผ ์คํํ๊ฒ ํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ _IO_FILE ๊ตฌ์กฐ์ฒด์ ์ ํ ํ
์ด๋ธ์ ์ ์ฅ๋ ์ฃผ์๋ฅผ ์คํํ๊ฒ ๋ฉ๋๋ค.
Attack
๊ณต๊ฒฉ์ ์ ๋ ฌ๋์ง ์์ ๋น ๋ด์์ ์์ ์ฒญํฌ๋ฅผ ์ป๋ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ์ด๋ ํ์ฌ ์์ ์ฒญํฌ ํฌ๊ธฐ๋ณด๋ค ํฌ์ง๋ง mmp_.mmap_threshold(๊ธฐ๋ณธ๊ฐ์ 128K)๋ณด๋ค ์์ ํฌ๊ธฐ๋ก malloc์ ํธ์ถํ์ฌ ๋ฌ์ฑ๋ฉ๋๋ค. ์์ ์ฒญํฌ ํฌ๊ธฐ๊ฐ ์์ ๋ ๋๋ง๋ค ์์ ์ฒญํฌ + ํฌ๊ธฐ๊ฐ ํ์ด์ง ์ ๋ ฌ๋๊ณ prev_inuse ๋นํธ๊ฐ ํญ์ ์ค์ ๋์ด ์๋์ง ํ์ธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์ ๋ ฌ๋์ง ์์ ๋น ๋ด์์ ์์ ์ฒญํฌ๋ฅผ ์ป์ผ๋ ค๋ฉด, ์์ ์ฒญํฌ๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ฒญํฌ๋ฅผ ํ ๋นํ๊ณ , ํ ๋น๋ ์ฒญํฌ์์ ์ค๋ฒํ๋ก์ฐ๋ฅผ ํตํด ์์ ์ฒญํฌ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ์ฌ ์์ ์ฒญํฌ + ํฌ๊ธฐ๊ฐ ํ์ด์ง ์ ๋ ฌ๋๊ณ prev_inuse ๋นํธ๊ฐ ์ค์ ๋๋๋ก ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์๋ก์ด ์์ ์ฒญํฌ ํฌ๊ธฐ๋ณด๋ค ํฐ ์ฒญํฌ๋ฅผ ํ ๋นํฉ๋๋ค. free๋ ์ ๋ ฌ๋์ง ์์ ๋น์ผ๋ก ์์ ์ฒญํฌ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด ํธ์ถ๋์ง ์๋๋ค๋ ์ ์ ์ ์ํ์ธ์.
์ด์ ์ด์ ์์ ์ฒญํฌ๊ฐ ์ ๋ ฌ๋์ง ์์ ๋น์ ์์ต๋๋ค. ๊ทธ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด(์ค๋ฒํ๋ก์ฐ๋ฅผ ์ ๋ฐํ ์ทจ์ฝ์ ์ผ๋ก ์ธํด ๊ฐ๋ฅํ ์ ์์), libc ์ฃผ์๋ฅผ ๋์ถํ๊ณ _IO_list_all์ ์ฃผ์๋ฅผ ์ป์ ์ ์์ต๋๋ค.
์ ๋ ฌ๋์ง ์์ ๋น ๊ณต๊ฒฉ์ ์ค๋ฒํ๋ก์ฐ๋ฅผ ์
์ฉํ์ฌ topChunk->bk->fwd = _IO_list_all - 0x10์ ์์ฑํจ์ผ๋ก์จ ์ํ๋ฉ๋๋ค. ์๋ก์ด ์ฒญํฌ๊ฐ ํ ๋น๋๋ฉด ์ด์ ์์ ์ฒญํฌ๊ฐ ๋ถํ ๋๊ณ , ์ ๋ ฌ๋์ง ์์ ๋น์ ๋ํ ํฌ์ธํฐ๊ฐ **_IO_list_all**์ ๊ธฐ๋ก๋ฉ๋๋ค.
๋ค์ ๋จ๊ณ๋ ์ด์ ์์ ์ฒญํฌ์ ํฌ๊ธฐ๋ฅผ 0x61๋ก ์ค์ฌ ์์ ๋น์ ๋ง์ถ๋ ๊ฒ์ ๋๋ค. ์ด๋ ๋ ๊ฐ์ง ๋ชฉ์ ์ ์ํํฉ๋๋ค:
- ์์ ๋น 4์ ์ฝ์
:
malloc์ด ์ ๋ ฌ๋์ง ์์ ๋น์ ์ค์บํ ๋ ์ด ์ฒญํฌ๋ฅผ ๋ณด๊ณ ์์ ํฌ๊ธฐ ๋๋ฌธ์ ์์ ๋น 4์ ์ฝ์ ํ๋ ค๊ณ ์๋ํฉ๋๋ค. ์ด๋ก ์ธํด ์ฒญํฌ๊ฐ **_IO_list_all**์ FD ํฌ์ธํฐ๊ฐ ์๋ ์์ ๋น 4 ๋ชฉ๋ก์ ๋จธ๋ฆฌ์ ์์นํ๊ฒ ๋ฉ๋๋ค. - Malloc ์ฒดํฌ ํธ๋ฆฌ๊ฑฐ: ์ด ์ฒญํฌ ํฌ๊ธฐ ์กฐ์์
malloc์ด ๋ด๋ถ ๊ฒ์ฌ๋ฅผ ์ํํ๊ฒ ํฉ๋๋ค. ์๋ชป๋ ํฌ์๋ ์ฒญํฌ์ ํฌ๊ธฐ๋ฅผ ํ์ธํ ๋, ์ด๋ 0์ด ๋์ด ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๊ณmalloc_printerr๋ฅผ ํธ์ถํฉ๋๋ค.
์์ ๋น์ ์กฐ์์ ์ฒญํฌ์ ํฌ์๋ ํฌ์ธํฐ๋ฅผ ์ ์ดํ ์ ์๊ฒ ํด์ค๋๋ค. _IO_list_all๊ณผ์ ๊ฒน์นจ์ ๊ฐ์ง _IO_FILE ๊ตฌ์กฐ์ฒด๋ฅผ ์์กฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ด ๊ตฌ์กฐ์ฒด๋ _IO_write_base ๋ฐ _IO_write_ptr์ ๊ฐ์ ์ฃผ์ ํ๋๋ฅผ ํฌํจํ๋๋ก ์ ์คํ๊ฒ ์ ์๋๋ฉฐ, libc์ ๋ด๋ถ ๊ฒ์ฌ๋ฅผ ํต๊ณผํ๋ ๊ฐ์ผ๋ก ์ค์ ๋ฉ๋๋ค. ๋ํ, ๊ฐ์ง ๊ตฌ์กฐ์ฒด ๋ด์ ์ ํ ํ
์ด๋ธ์ด ์์ฑ๋์ด ์์์ ์ฝ๋(์: system ํจ์)๋ฅผ ์คํํ ์ ์๋ ์ฃผ์์ ๋ช
๋ น์ด ํฌ์ธํฐ๊ฐ ์ค์ ๋ฉ๋๋ค.
๊ธฐ์ ์ ๋๋จธ์ง ๋ถ๋ถ์ ์์ฝํ๋ฉด:
- ์ด์ ์์ ์ฒญํฌ ์ถ์: ์ด์ ์์ ์ฒญํฌ์ ํฌ๊ธฐ๋ฅผ 0x61๋ก ์กฐ์ ํ์ฌ ์์ ๋น์ ๋ง์ถฅ๋๋ค.
- ๊ฐ์ง
_IO_FILE๊ตฌ์กฐ์ฒด ์ค์ : ์ด์ ์์ ์ฒญํฌ์ ๊ฐ์ง _IO_FILE ๊ตฌ์กฐ์ฒด๊ฐ ๊ฒน์น๋๋ก ํ๊ณ ํ๋๋ฅผ ์ ์ ํ ์ค์ ํ์ฌ ์คํ ํ๋ฆ์ ํ์ทจํฉ๋๋ค.
๋ค์ ๋จ๊ณ๋ ์ ๋ ฌ๋์ง ์์ ๋น์ ํ์ฌ ์๋ ์ด์ ์์ ์ฒญํฌ์ ๊ฒน์น๋ ๊ฐ์ง _IO_FILE ๊ตฌ์กฐ์ฒด๋ฅผ ์์กฐํ๋ ๊ฒ์ ๋๋ค. ์ด ๊ตฌ์กฐ์ฒด์ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํธ๋ ์คํ๋ ๋ช ๋ น์ด(์: โ/bin/shโ)์ ๋ํ ํฌ์ธํฐ๋ฅผ ํฌํจํ๋๋ก ์ ์คํ๊ฒ ์ ์๋ฉ๋๋ค.
๊ฐ์ง _IO_FILE ๊ตฌ์กฐ์ฒด์ ์ฃผ์ ํ๋์ธ _IO_write_base ๋ฐ _IO_write_ptr๋ libc์ ๋ด๋ถ ๊ฒ์ฌ๋ฅผ ํต๊ณผํ๋ ๊ฐ์ผ๋ก ์ค์ ๋ฉ๋๋ค. ๋ํ, ๊ฐ์ง ๊ตฌ์กฐ์ฒด ๋ด์ ์ ํ ํ
์ด๋ธ์ด ์์ฑ๋์ด ์์์ ์ฝ๋๋ฅผ ์คํํ ์ ์๋ ์ฃผ์์ ๋ช
๋ น์ด ํฌ์ธํฐ๊ฐ ์ค์ ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด๋ system ํจ์ ๋๋ ์
ธ ๋ช
๋ น์ ์คํํ ์ ์๋ ๋ค๋ฅธ ํจ์์ ์ฃผ์๊ฐ ๋ฉ๋๋ค.
๊ณต๊ฒฉ์ malloc ํธ์ถ์ด ์กฐ์๋ _IO_FILE ๊ตฌ์กฐ์ฒด๋ฅผ ํตํด ์ฝ๋๋ฅผ ์คํํ๊ฒ ํ ๋ ์ ์ ์ ๋ฌํฉ๋๋ค. ์ด๋ ์์์ ์ฝ๋ ์คํ์ ํจ๊ณผ์ ์ผ๋ก ํ์ฉํ๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ์
ธ์ด ์์ฑ๋๊ฑฐ๋ ๋ค๋ฅธ ์
์ฑ ํ์ด๋ก๋๊ฐ ์คํ๋๋ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํฉ๋๋ค.
๊ณต๊ฒฉ ์์ฝ:
- ์์ ์ฒญํฌ ์ค์ : ์ฒญํฌ๋ฅผ ํ ๋นํ๊ณ ์์ ์ฒญํฌ ํฌ๊ธฐ๋ฅผ ์์ ํฉ๋๋ค.
- ์์ ์ฒญํฌ๋ฅผ ์ ๋ ฌ๋์ง ์์ ๋น์ผ๋ก ๊ฐ์ ์ด๋: ๋ ํฐ ์ฒญํฌ๋ฅผ ํ ๋นํฉ๋๋ค.
- libc ์ฃผ์ ๋์ถ: ์ทจ์ฝ์ ์ ์ฌ์ฉํ์ฌ ์ ๋ ฌ๋์ง ์์ ๋น์์ ์ฝ์ต๋๋ค.
- ์ ๋ ฌ๋์ง ์์ ๋น ๊ณต๊ฒฉ ์ํ: ์ค๋ฒํ๋ก์ฐ๋ฅผ ์ฌ์ฉํ์ฌ _IO_list_all์ ์๋๋ค.
- ์ด์ ์์ ์ฒญํฌ ์ถ์: ์์ ๋น์ ๋ง๋๋ก ํฌ๊ธฐ๋ฅผ ์กฐ์ ํฉ๋๋ค.
- ๊ฐ์ง _IO_FILE ๊ตฌ์กฐ์ฒด ์ค์ : ์ ์ด ํ๋ฆ์ ํ์ทจํ๊ธฐ ์ํด ๊ฐ์ง ํ์ผ ๊ตฌ์กฐ์ฒด๋ฅผ ์์กฐํฉ๋๋ค.
- ์ฝ๋ ์คํ ํธ๋ฆฌ๊ฑฐ: ๊ณต๊ฒฉ์ ์คํํ๊ณ ์์์ ์ฝ๋๋ฅผ ์คํํ๊ธฐ ์ํด ์ฒญํฌ๋ฅผ ํ ๋นํฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ํ ๊ด๋ฆฌ ๋ฉ์ปค๋์ฆ, libc ์ ๋ณด ๋์ ๋ฐ ํ ์ค๋ฒํ๋ก์ฐ๋ฅผ ์
์ฉํ์ฌ free๋ฅผ ์ง์ ํธ์ถํ์ง ์๊ณ ์ฝ๋ ์คํ์ ๋ฌ์ฑํฉ๋๋ค. ๊ฐ์ง _IO_FILE ๊ตฌ์กฐ์ฒด๋ฅผ ์ ์คํ๊ฒ ์ ์ํ๊ณ ์ฌ๋ฐ๋ฅธ ์์น์ ๋ฐฐ์นํจ์ผ๋ก์จ, ๊ณต๊ฒฉ์ ํ์ค ๋ฉ๋ชจ๋ฆฌ ํ ๋น ์์
์ค์ ์ ์ด ํ๋ฆ์ ํ์ทจํ ์ ์์ต๋๋ค. ์ด๋ ์์์ ์ฝ๋ ์คํ์ ๊ฐ๋ฅํ๊ฒ ํ์ฌ, ์ ์ฌ์ ์ผ๋ก ์
ธ์ด๋ ๋ค๋ฅธ ์
์ฑ ํ๋์ ์ด๋ํ ์ ์์ต๋๋ค.
References
- https://ctf-wiki.mahaloz.re/pwn/linux/glibc-heap/house_of_orange/
- https://guyinatuxedo.github.io/43-house_of_orange/house_orange_exp/index.html
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์ ์ ์ถํ์ฌ ํดํน ํธ๋ฆญ์ ๊ณต์ ํ์ธ์.


