ํฐ์คํ ๋ฆฌ ๋ทฐ

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 |