[SegFault] (CSRF) - GET Admin 2
[SegFault] (CSRF)
GET Admin 2
admin ๊ณ์ ์ ํ์ทจํด ๋ก๊ทธ์ธํ๋ฉด, flag๋ฅผ ํ๋ํ ์ ์์ต๋๋ค.
๋ฌธ์ ํ์
๋ณธ ๋ฌธ์ ์ ๊ฒฝ์ฐ CSRF ์ทจ์ฝ์ ์ ์ด์ฉํ์ฌ ๋น๋ฐ๋ฒํธ๋ฅผ ์ํ๋ ๋น๋ฐ๋ฒํธ๋ก ๋ณ๊ฒฝํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ฝ์ ํ๊ณ , ๊ด๋ฆฌ์ visit Bot์ ํด๋น ๋งํฌ๋ฅผ ์ ๋ ฅํ์ฌ admin ๊ณ์ ์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ์ฌ ํด๋น ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ๋ฉด flag๊ฐ ๋์ค๋๋ก ์ด๋ฃจ์ด์ ธ์๋ค.
์ฐ์ ์์ ๊ด๋ฆฌ์ visit Bot ๋งํฌ์ ์ ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ์ด์ง๊ฐ ๋์จ๋ค.

ํ์๊ฐ์ ํ id์ ๋ค์ _amdin์ ๋ถ์ฌ๋ฃ์ id๊ฐ ๊ณต๊ฒฉํ id ์ด๋ค.
ex) gear -> gear_admin
๊ณต๊ฒฉํ ์์ด๋์ CSRF ๊ณต๊ฒฉ ์ ๋ณด๊ฐ ๋ด๊ฒจ์๋ URL์ ์ ๋ ฅํ๋ฉด ํด๋น ์์ด๋์ ๋น๋ฐ๋ฒํธ๊ฐ ๋ณ๊ฒฝ๋๊ฒ ๋๋ค.
๋ฌธ์ ๋งํฌ์ ์ ์์ ํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ฐฝ์ด ๋์จ๋ค.
์ฐ์ ํ์๊ฐ์ ํ ๋ก๊ทธ์ธ์ ์๋ํด๋ณธ๋ค.
๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ๋ CSRF ๊ณต๊ฒฉ์ ํ ๊ฒ์ด๋ฏ๋ก ์ฐ์ ๋ง์ดํ์ด์ง์ ๋ค์ด๊ฐ์ ๋น๋ฐ๋ณ๊ฒฝ์ ์ค์ ๋ก ์๋ํด๋ณด๊ณ ๊ทธ ๊ณผ์ ์ ํ์ธํด๋ณธ๋ค.
๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ ๊ณผ์ ์ ํ์ธํ๊ธฐ ์ํด ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํด๋ณด๊ณ ์ด๋ฅผ Burp๋ฅผ ํตํด ํ์ธํ๋ค.
์์ ๊ฐ์ด ์์ฒญ์ ๋ณด๋ฉด pw ํ๋ผ๋ฏธํฐ์ ๋ณ๊ฒฝํ๋ ๋น๋ฐ๋ฒํธ๊ฐ ์ ๋ ฅ๋์ด ๋ค์ด๊ฐ๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ดํ์ ๊ณผ์ ์ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
๋ง์ดํ์ด์ง์์ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ์ ์์ฒญํ๋ฉด, ๋น๋ฐ๋ฒํธ๊ฐ ๋ณ๊ฒฝ๋ ํ, ๋ก๊ทธ์์์ด ์งํ๋๊ณ ์ด๊ธฐํ์ด์ง๋ก ๋์๊ฐ๋ค.
CSRF Point (์ธ์ฆ ์ ๋ณด)
์์ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ๋ ์ผ๋ จ์ ๊ณผ์ ์ ๋ณด๋ฉด, ์ถ๊ฐ์ ์ผ๋ก ์ธ์ฆํ๋ ์ธ์ฆ์ ๋ณด ์์ด ๋ณ๊ฒฝ ์์ฒญ์ด ๊ฐ๋ฅํ๋ค.
XSS Point
XSS๋ฅผ ํ์ฉํ์ง ์๋ CSRF ์ทจ์ฝ์ ์ URL์ ํด๋ฆญํ๋๋ก ์ ๋ํด์ผํ๋ค. ํ์ง๋ง XSS ์ทจ์ฝ์ ์ด ์กด์ฌํ๋ค๋ฉด ์ ๋กํด๋ฆญ์ ๊ตฌํํ ์ ์๋ค.
๊ทธ๋ฌ๋ฏ๋ก ๊ณต์ง์ฌํญ์ ๊ธ์ฐ๊ธฐ ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ XSS๊ฐ ๊ฐ๋ฅํ์ง ํ์ธํด๋ณด๊ธฐ ์ํด ์คํฌ๋ฆฝํธ์ ์ํฅ์ ์ค ์ ์๋ ํน์ ๋ฌธ์< ' " >๋ฅผ ์ ๋ ฅํ์ฌ ํ์ธํด๋ณธ๋ค.
์๋ต(Response)์ ํ์ธํด๋ณธ ๊ฒฐ๊ณผ ๊ธ์ ๋ด์ฉ ๋ถ๋ถ์ ์ ๋ ฅ๊ฐ์ด ๊ทธ๋๋ก ์ถ๋ ฅ๋๊ณ ์๋ ๊ฒ์ ํ์ธํ์๋ค.
ํ์ด ๊ณผ์ (ํด๊ฒฐ ๋ฐฉ์)
๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ์ ์ํ ํ์ด๋ก๋(Payload)๋ฅผ ์์ฑํ๋ค.
ํ์ด๋ก๋(Payload)
<iframe name="stealthFrame" sandbox="allow-scripts" style="display:none"></iframe>
<body onload="document.getElementById('tempForm').submit();">
<form method="POST" action="http://ctf.segfaulthub.com:7575/csrf_2/mypage_update.php" id="tempForm" target="stealthFrame">
<input type="hidden" name="pw" value="1234">
</form>
iframe์ ์ด์ฉํ์ฌ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ๋ ํ์ด์ง์ ์ ๊ทผํ์ฌ ๋ณ๊ฒฝํ๊ณ ์ถ์ ๋น๋ฐ๋ฒํธ๋ก ๋ณ๊ฒฝํ๋ค.
์คํฌ๋ฆฝํธ ์ฝ์
XSS ์ทจ์ฝ์ ์ด ์กด์ฌํ๋ ๊ธ์ฐ๊ธฐ ๊ธฐ๋ฅ์ ์ด์ฉํ์ฌ ํด๋น ํ์ด๋ก๋๋ฅผ ๊ธ์ ๋ด์ฉ์ ์ฝ์ ํ๋ค.
ํด๋น ๊ธ์ ์ฝ๊ธฐ ์ํด ์ ๊ทผํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์คํฌ๋ฆฝํธ๊ฐ ํ์ฑํ๋์ด ๋ด์ฉ์ ์๋ฌด ๊ฒ๋ ๋จ์ง ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ด๋ฅผ Burp๋ฅผ ์ด์ฉํ์ฌ ํ์ธํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
์ดํ์ ๊ณผ์ ์ ์ดํด๋ณด๋ฉด allow-scripts ๋ฅผ ์ด์ฉํจ์ผ๋ก์จ ๊ธฐ์กด์ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ๊ณผ ๊ฐ์ด ๋น๋ฐ๋ฒํธ๋ณ๊ฒฝ, ๋ก๊ทธ์์, ์ด๊ธฐํ์ด์ง๋ก์ ๋ฆฌ๋๋ ์ ์ ๋ฐ์ํ์ง ์๋๋ค.
์ด์ ํด๋น ๊ธ์ ์ ๊ทผํ๋ URL์ ๊ด๋ฆฌ์ visit Bot์ ๋ฃ์ด์ค๋ค.
์ดํ ๋ก๊ทธ์์์ ํ๊ณ ๊ด๋ฆฌ์ ๊ณ์ ์ผ๋ก์ ๋ก๊ทธ์ธ์ ์๋ํ๋ค.
๊ด๋ฆฌ์ ๊ณ์ ์ ๋ณ๊ฒฝ์ํจ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ์ฌ ๋ก๊ทธ์ธํ๋ฉด ์ฑ๊ณต์ ์ผ๋ก ๋ก๊ทธ์ธ๋๊ณ ๋ค์๊ณผ ๊ฐ์ด ์๋ฆผ์ฐฝ์ Flag๊ฐ์ด ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์์ ๊ฐ์ด ๊ด๋ฆฌ์ ๊ณ์ ์ผ๋ก์ ๋ก๊ทธ์ธ์ ํตํด flag๊ฐ์ด ํ๋๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ทจ์ฝ์ ์ ๊ดํ ๊ณ ์ฐฐ
๋ณธ ๋ฌธ์ ์ ๊ฒฝ์ฐ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ์ ์์ด ์ถ๊ฐ์ ์ธ ์ธ์ฆ์ ๋ณด ์์ด ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ์ฌ ๋ฐ์ํ CSRF ์ทจ์ฝ์ ์ด๋ค.
๋ํ ๊ฒ์๊ธ์ ๋ด์ฉ์ ์คํฌ๋ฆฝํธ๊ฐ ์ฝ์ ๊ฐ๋ฅํ XSS ์ทจ์ฝ์ ์ ํจ๊ป ์ฌ์ฉํ์ฌ CSRF(with XSS) ์ทจ์ฝ์ ์ผ๋ก์ ์ด์ฉํ๋ค.
CSRF๋ ์คํฌ๋ฆฝํธ๊ฐ ์ฝ์ ๋ ๊ธ์ ์ ๊ทผํ๋ ๋ชจ๋ ์ด์ฉ์์ ๋น๋ฐ๋ฒํธ๋ฅผ ๊ฐ์ ๋ก ๋ณ๊ฒฝ์ํฌ ์ ์๋ ์ํํ ์ทจ์ฝ์ ์ผ๋ก์ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ๊ณผ ๊ฐ์ ์ค์์ ๋ณด์ ๋ํ์ฌ ์ ๊ทผ์ ์ถ๊ฐ์ ์ธ ์ธ์ฆ ์ ์ฐจ๋ฅผ ๊ตฌํํด์ผํ๋ค.
์ง๋ฌธ ํ์, ์์ ๋ฐ ๋ณด์์ ๋ํ ์ง์ ํ์