Hack The Planet

๋ฐ˜๊ฐ‘์Šต๋‹ˆ๋‹ค, cyalume์˜ ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.

web

[XSS-game] Level 2 ๋ฌธ์ œํ’€์ด

cyalume 2021. 4. 18. 19:10

xss-game ์‚ฌ์ดํŠธ


๋ฒˆ์—ญ :

๋ฏธ์…˜ ์„ค๋ช…

์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ์ข…์ข… ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์™€ ํด๋ผ์ด์–ธํŠธ ์ธก ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ณด๊ด€ํ•˜๊ณ  ๋‚˜์ค‘์— ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์‚ฌ์šฉ์ž ์ œ์–ด ๋ฐ์ดํ„ฐ์˜ ์ถœ์ฒ˜์— ๊ด€๊ณ„์—†์ด ์ด๋“ค์„ ์‹ ์ค‘ํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ด ๋‹จ๊ณ„๋Š” ๋ณต์žกํ•œ ์•ฑ์—์„œ XSS ๋ฒ„๊ทธ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์‰ฝ๊ฒŒ ๋„์ž… ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๋ฏธ์…˜ ๋ชฉํ‘œ

์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์ปจํ…์ŠคํŠธ์—์„œ alert ()๋ฅผ ํŒ์—…ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜์‹ญ์‹œ์˜ค.

์ฐธ๊ณ  : ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๊ฒŒ์‹œ๋ฌผ์„ ์ €์žฅํ•˜๋ฏ€๋กœ ๊ฒฝ๊ณ ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ฝ”๋“œ๋ฅผ ์‚ด์ง ์ž…๋ ฅํ•˜๋ฉด ๋‹ค์‹œ ๋กœ๋“œ ํ•  ๋•Œ ๋งˆ๋‹ค ์ด ๋ ˆ๋ฒจ์„ ํ’€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด ์ž…๋ ฅ์„ ์ €์žฅํ•˜๊ณ  ๋‹ค์‹œ ๋‚˜์—๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” ๊ตฌ์กฐ์ด๋‹ค.

๊ทธ๋ƒฅ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ์— alert()๋ฅผ ๋„ฃ์–ด๋ณด๋ฉด

๋†€๋ž๊ฒŒ๋„ ์•„๋ฌด ์ผ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค.

์„ค๋ช…์„ ๋‹ค์‹œ ์ฐจ๋ถ„ํžˆ ์ฝ์–ด๋ณธ๋‹ค๋ฉด ๋ฌด์–ธ๊ฐ€๊ฐ€ ๋– ์˜ค๋ฅผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

์„œ๋ฒ„์— ๊ฒŒ์‹œ๋ฌผ์„ ์ €์žฅํ•˜๊ณ , ๊ทธ๊ฑธ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜จ๋‹ค๋Š” ์ ์—์„œ ๊ฒŒ์‹œํŒ์ด ์ƒ๊ฐ๋‚œ๋‹ค.
์ฆ‰, ์šฐ๋ฆฌ๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ €์žฅํ•˜๊ณ , ๊ทธ๊ฒƒ์„ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ alert()๋ฅผ ๋„์šฐ๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด์ฏค๋˜๋‹ˆ Stored xss ๊ณต๊ฒฉ์ด ์ƒ๊ฐ๋‚ฌ๋‹ค.
์ด๋Š” ์ทจ์•ฝํ•œ ์›น ์‚ฌ์ดํŠธ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ €์žฅํ•˜๊ณ , ๊ทธ ์ž๋ฃŒ๋ฅผ ์š”์ฒญํ•  ๋•Œ ํ•ด๋‹น ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํฌํ•จ๋œ response๊ฐ€ ์ „๋‹ฌ๋˜์–ด ๋‹ค์‹œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ์„œ ๋™์ž‘ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š์œผ๋‹ˆ ์ด๋ฏธ์ง€ ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ๋ณด๊ฒ ๋‹ค.
์ด๋ฏธ์ง€ ํƒœ๊ทธ๋กœ ์–ด๋–ป๊ฒŒ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ƒ๊ณ ?
๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‹ค.
ํƒœ๊ทธ์˜ src ์†์„ฑ์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ด๋ฏธ์ง€์˜ ๊ฒฝ๋กœ๋ฅผ ์ž„์˜๋กœ ์ž…๋ ฅํ•œ ํ›„, onerror ์†์„ฑ์œผ๋กœ ๊ทธ์— ๋Œ€ํ•œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด ์ฃผ๋ฉด ๋œ๋‹ค.
๋‹ค์‹œ ๋งํ•ด์„œ ์šฐ๋ฆฌ๋Š” <img src =โ€œ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ๋กœโ€ onerror=โ€œalert(1)โ€> ์ด๋Ÿฐ์‹์œผ๋กœ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์งค ์ˆ˜ ์žˆ๋‹ค.

onerror๋ž€?
์›๋ณธ ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

๊ทธ๋ฆฌํ•˜์—ฌ ๋‚˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž…๋ ฅํ•ด stored xss๋ฅผ ์ถœ๋ ฅํ•˜๊ฒŒ ํ–ˆ๋‹ค.

<img src=โ€œcyalume.jpgโ€ onerror=โ€œalert(โ€˜stored xssโ€™)โ€>



์‹คํ–‰ ๊ฒฐ๊ณผ alert๋ฅผ ๋„์šฐ๋Š” ๋ฐ ์„ฑ๊ณตํ•˜์˜€๋‹ค.


Key point: stored xss, img ํƒœ๊ทธ์˜ onerror ์ฒ˜๋ฆฌ