ํฐ์คํ ๋ฆฌ ๋ทฐ
13๋จ๊ณ ๋ฉ์ธ ํ์ด์ง๋ฅผ ํ์ธํด๋ณด๋ฉด ์ ๋จ๊ณ์ ์ ์ฌํ ๋์์ธ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, 12๋จ๊ณ์์ ์ฌ์ฉ๋ Payload๊ฐ ๋์ํ ์๋ ๋์ํ์ง ์์ ์๋ ์๋ค๋ ๋ด์ฉ์ด ๋ด๊ฒจ์์ต๋๋ค. ์ ๊ฐ ์ฌ์ฉํ๋ Payload๋ ๋์ํ์ง ์์์ผ๋ฏ๋ก ์ฝ๋๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋์ผํ๊ฒ <iframe> ํ๊ทธ๋ฅผ ํตํด untrusted ๋๋ฉ์ธ์ด ์ ์ธ๋์ด ์์ต๋๋ค.
์คํฌ๋กค์ด ๋๋ฌด ๋จ์ ๋ฐ์ผ๋ก ๋ด๋ ค๋ณด๋ <script ํ๊ทธ ์์ 1evel12.js ๊ด๋ จ ํ์ผ์ด ์กด์ฌํฉ๋๋ค.(์ฌ๊ธด level 13์ธ๋..?)
js ํ์ผ ๋ด๋ถ์ ๋ค์ด๊ฐ ๋ณด๋ function ์์ ์ค๋ฆฌ์ง ์์ฑ์ด ์กด์ฌํ๋ค์. untrusted.sudo.co.il ์ ๋ฐ์๋ ํ์ ์ฐฝ์ ๋ฉ์ธ ํ์ด์ง์ ๋ฐ๋ ์์ญ์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์ฐธ๊ณ ๋ก ์๋ฐ์คํฌ๋ฆฝํธ์ append ํจ์๋ ์ง์ ๋ ์์ญ์ ๋์ ์๋ก์ด ์ฝํ ์ธ ๋ฅผ ์ถ๊ฐํ ์ ์๋ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๊ทธ๋ผ ์ด๋ฒ์๋ ๋ณ๋์ ๊ณต๊ฒฉ์ ์๋ฒ ๋ก๋ํ๋ ๋ฐฉ์์ด ์๋ untrusted๋ฅผ ์ ์ ๋ น ํ ํธ์ถํด๋ณด๊ฒ ์ต๋๋ค.
์ฐธ์กฐ ํ์ด์ง์ ์ฝ๋๋ฅผ ํ์ธํด๋ณด๋ฉด ์ด์ ๋จ๊ณ์ ๋์ผ ์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ๋จผ์ ์ฐจ์ด์ ์ ํ์ ํด์ผ ๊ทธ์ ๊ฑธ๋ง์ ์ฐํ ํจํด์ ์ ์ฉํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ด์ ๋จ๊ณ์์๋ "alert" ๋ฌธ์์ด์ ๋ํด ์์ธ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ์์์ง๋ง 13๋จ๊ณ์์๋ "()" ๊ดํธ๊น์ง ํํฐ๋งํ๊ณ ์์ต๋๋ค.
alert ๋ฌธ์์ด์ Unicode์ ํผํฉํ์ฌ ๋๋ ํ๋ฅผ ํด์ฃผ๊ณ () ๊ดํธ ๊ฒ์ฆ์ ์์ด์๋ -> ` (๋ฐฑ ์ฟผํฐ)๋ฅผ ์ฌ์ฉํด์ฃผ๋ฉด ํ์ ์ฐฝ์ ๋ฌด๋ฆฌ ์์ด ๋์ธ ์ ์์ง๋ง ๋ญ๊ฐ ๋ค๋ฅธ ๋ฐฉ์์ ํตํด m ๋ณ์์ ์ ์ธ๋ "Good Luck!"์ ๋์์ฃผ๊ณ ์ถ์ต๋๋ค.
() Bypass
๊ธฐ๋ณธ์ ์ผ๋ก " () " ๊ดํธ ํํฐ๋ง์ ์ฐํ ๊ธฐ๋ฒ์ " `(Back Quote)" ๋ก ๋ง์ด ์ฌ์ฉํ์ง๋ง ์ด ๋ฐฉ๋ฒ ์ด์ธ์ ์๋์ ๊ฐ์ 2๊ฐ์ง ์์ฑ์ ์ด์ฉํด ๊ดํธ ์ฌ์ฉ์ ํผํ ์ ์์ต๋๋ค.
1. Constructor Function(์์ฑ์ ํจ์)
- Set.constructor(Set์ด๋ผ๋ ๋ด์ฅ ํจ์์ ์์ฑ์๋ฅผ ์ค์ )
2. Timer Function(ํ์ด๋จธ ํจ์)
- setTimeout(ํจ์, ์๊ฐ) -> ์ผ์ ์๊ฐ ํ ์คํ
- setInterval(ํจ์, ์๊ฐ) -> ์ผ์ ์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก ๋ฐ๋ณต ์คํ
3. Ecama Script์ AutoType Casting ํน์ฑ์ ํ์ฉํ " () " ์ด์ค์ผ์ดํ(HEX Ascii, Octal, Unicode) ์ฒ๋ฆฌ
Constructor Payload
Set.constructor`al\u0065rt\`Call\````
=> Set์ด๋ผ๋ ๋ด์ฅ ํจ์์ ๋์์ ale(Unicode Escaping์ฒ๋ฆฌ)rt(Call)๋ก ์ค์ ํ ์คํ(๋ฐฑ ์ฟผํฐ๋ก ๊ฐ์ธ ์ค์ผ๋ก์จ ํจ์์ ์ธ์๋ฅผ ์ ๋ฌ&ํจ์ ์คํ) -> ๋ง์น ("alert(Call)")() ๊ฐ์ ํํ
Set.constructor`al\u0065rt\u0028Call\u0029```
=> \x28(Hex Ascii) \50(Octal) \u0028(Unicode) ==> (
\x29(Hex Ascii) \51(Octal) \u0029(Unicode) ==> )
Timer Payload
setTimeout`al\u0065rt\28Call\x29`
setInterval`al\u0065rt\x28Call\x29`
=> \x28(Hex Ascii) \50(Octal) \u0028(Unicode) ==> (
\x29(Hex Ascii) \51(Octal) \u0029(Unicode) ==> )
';setInterval`al\u0065rt\x28m\x29'; //
์ด๋ฌํ ์ฐํ ํจํด์ ํ์ฉํ์ฌ "m" ๋ณ์์ ๋ด๊ธด Good Luck! ํธ์ถ์ ์ฑ๊ณต์ ์ผ๋ก ๋ง์น ์ ์์ต๋๋ค.
sudo.co.il ๋ฉ์ธ ํ์ด์ง๋ก ๋์ด์ ์์ ๊ตฌ๋ฌธ์ ๋ฃ์ด๋ณด๋ฉด <iframe> ํ๊ทธ๋ฅผ ํตํด untrusted ์ชฝ ๋๋ฉ์ธ์ผ๋ก ์ ๋ฌ๋๊ฒ ๋๋ฉฐ ์คํฌ๋ฆฝํธ๋ฅผ ๋ถ๋ฌ์ค๊ฒ ๋ ๊ฒ์ ๋๋ค.
๊ดํธ๋ฅผ ๊ฒ์ฆํ๊ณ ์๋ ์ํ์์ ๊ณต๊ฒฉ ๊ตฌ๋ฌธ์ ์์ฑ์ํค ์ํด์๋ ๋ฐฑ ์ฟผํฐ ์ด์ธ์ ๋ด์ฅ ํจ์์ ์ด์ค์ผ์ดํ ์ฒ๋ฆฌ๋ ๋ฌธ์์ด์ ์ด์ฉํ์ฌ ์ฐํ๊ฐ ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ๊ธฐ์ตํด๋์๊ธฐ ๋ฐ๋๋๋ค!!
'CHALLENGE' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
XSS Challenges 14 (0) | 2021.08.31 |
---|---|
XSS Challenges 12 (0) | 2021.08.28 |
XSS Challenges 11 (0) | 2021.08.27 |
XSS Challenges 10 (0) | 2021.08.26 |
XSS Challenges 9 (0) | 2021.08.25 |