ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

CHALLENGE

XSS Challenges 13

๐ŸŒง: 2021. 8. 29.

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
๊ณต์œ ํ•˜๊ธฐ ๋งํฌ
Comment