DOM XSS : LAB [4]

DATE : 2024/1/9

์ด๋ฒˆ LAB์€ hash์™€ ๊ด€๋ จ๋œ ๋ฌธ์ œ๋กœ ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” hash๋Š” ๋ฌธ์ž #๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

URL ๋ฐ”์—์„œ ์‚ฌ์šฉ๋˜๋Š” #๋Š” ํ•œ ํŽ˜์ด์ง€ ๋‚ด์—์„œ ์ „์ฒด ํƒ€์ดํ‹€์ด๋‚˜ ๋ฌธ๋‹จ ์ œ๋ชฉ๊ณผ ๊ฐ™์ด

ํด๋ฆญํ–ˆ์„ ๊ฒฝ์šฐ, ํ•ด๋‹น ์ฝ˜ํ…์ธ ๊ฐ€ ์ œ๊ณต๋˜๋Š” ์œ„์น˜๋กœ ์ด๋™ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

LAB์—์„œ๋„ #2๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์ œ๋ชฉ์— 2๊ฐ€ ๋“ค์–ด๊ฐ„ ๊ฒŒ์‹œ๋ฌผ ์ค‘ ์ œ์ผ ์ฒซ ๋ฒˆ์งธ ๊ฒŒ์‹œ๋ฌผ์„ ์ฐพ์•„

ํ•ด๋‹น ์œ„์น˜๋กœ ํ™”๋ฉด์„ ์ด๋™ ์‹œ์ผœ์ค€๋‹ค.

๋งŒ์•ฝ ๋Œ€๋ฌธ์ž O๋ฅผ ์ž…๋ ฅํ–ˆ๋‹ค๋ฉด ์œ„์˜ ์‚ฌ์ง„๊ณผ ๊ฐ™์ด #๋กœ ์ž‘์„ฑํ•œ ๊ฐ’์ด

์ œ๋ชฉ์— ํฌํ•จ๋œ ๊ฒŒ์‹œ๋ฌผ ์ค‘ ์ œ์ผ ์ฒซ ๋ฒˆ์งธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฒŒ์‹œ๋ฌผ ์œ„์น˜๋กœ ์ด๋™ํ•œ ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ด์ฒ˜๋Ÿผ hash๋ฅผ ์ด์šฉํ•ด ํŽ˜์ด์ง€์˜ ํŠน์ • ์œ„์น˜๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ LAB์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•ด๋’€๋Š”์ง€

์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด

section.blog-list h2 element ์ค‘ contains์— ํ•ด๋‹นํ•˜๋Š” element๋ฅผ ์ฐพ์•„

์ด๋™ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋‘” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ด๋•Œ section.blog-list h2๋Š” CSS์—์„œ HTML์— ์ž‘์„ฑ๋œ element๋ฅผ ๊พธ๋ฏธ๊ธฐ ์œ„ํ•ด

์Šคํƒ€์ผ์„ ์ž…ํž element๋ฅผ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ ๋“ฑ์žฅํ•˜๋Š” ์„ ํƒ์ž๋กœ

์ฝ”๋“œ์— ์ž‘์„ฑ๋ผ ์žˆ๋Š” ์„ ํƒ์ž๋Š”

section.blog-list h2

blog-list class์ธ section tag ์•ˆ์— ์žˆ๋Š” h2 tag๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

Packet์„ ์‚ดํŽด๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ "blog-list class์ธ section tag ์•ˆ์— ์žˆ๋Š” h2 tag"๋Š”

๊ฐ ๊ฒŒ์‹œ๋ฌผ์˜ ์ œ๋ชฉ์„ ๋‚˜ํƒ€๋‚ด๋Š” ํƒœ๊ทธ์ด๋‹ค.

๋”ฐ๋ผ์„œ ์•ž์„œ #์— ์ž„์˜๋Œ€๋กœ ๊ฐ’์„ ์ž…๋ ฅํ–ˆ์„ ๋•Œ, ๊ฒŒ์‹œ๋ฌผ ์ œ๋ชฉ์„ ๊ธฐ์ค€์œผ๋กœ ํŽ˜์ด์ง€๊ฐ€ ์ด๋™ํ–ˆ๋˜ ๊ฒƒ!

์ด์ œ ์ฝ”๋“œ๋ฅผ ์ „๋ฐ˜์ ์œผ๋กœ ํŒŒ์•…ํ–ˆ์œผ๋‹ˆ ์ด๋ฅผ ํ™œ์šฉํ•ด print() ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œ์ผœ๋ณด์ž.

var post = $('section.blog-list h2:contains(' __INPUT__ ')');

#์„ ์ด์šฉํ•ด ์ž„์˜์˜ ๋‚ด์šฉ์„ ์ „๋‹ฌํ•˜๊ฒŒ ๋˜๋ฉด ๊ทธ ๊ฐ’์€ __INPUT__ ์ž๋ฆฌ์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋œ๋‹ค.

์ด๋ฅผ ๊ณ ๋ คํ•ด ์•„๋ž˜์™€ ๊ฐ™์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋ฉด

<iframe src="http://LAB-ID.web-security-academy.net/#" onload="this.src+='<img src=1 onerror=print()>'"></iframe>

๊ณต๊ฒฉ์ž ์„œ๋ฒ„์—์„œ Body์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋„ฃ๊ณ  ์ €์žฅํ•ด์ค€๋‹ค.

์ด๋ฅผ ์š”์ฒญํ•˜๊ฒŒ ๋˜๋ฉด iframe์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด src์— ์ ํžŒ LAB ์ฃผ์†Œ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด๊ฒŒ ๋˜๋Š”๋ฐ

์ด๋•Œ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ ์‹œํ‚ฌ img ํƒœ๊ทธ๊ฐ€ ๋”ฐ๋ผ ๋ถ™์œผ๋ฉด์„œ print()๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

(<img> tag๊ฐ€ src=1์ด๋ฉด ์ž˜๋ชป๋œ ๊ฒฝ๋กœ์ด๊ธฐ ๋•Œ๋ฌธ์—์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋จ)

์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ €์žฅํ•œ ํ›„, Deliver exploit to victim์„ ํด๋ฆญํ•˜๋ฉด

์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ์œ„์™€ ๊ฐ™์ด print ์ฐฝ์ด ์ถœ๋ ฅ ๋˜๋ฉด์„œ

์‚ฌ์šฉ์ž์˜ ์˜๋„์™€๋Š” ์ƒ๊ด€ ์—†์ด ๊ณต๊ฒฉ์ž๊ฐ€ ์‚ฝ์ž…ํ•œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

LAB ์‚ฌ์ดํŠธ์— ์ง์ ‘์ ์œผ๋กœ ๊ณต๊ฒฉํ•˜๋Š” ๋Š๋‚Œ๋ณด๋‹ค๋Š” ๊ฐ„์ ‘์ ์œผ๋กœ ์ทจ์•ฝ์ ์ด ์กด์žฌํ•˜๋Š” ์‚ฌ์ดํŠธ๋ฅผ

ํ™œ์šฉํ•œ๋‹ค๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋Š” ๊ฑธ ์–ป์–ด๊ฐ€๋ฉด ์ข‹์„ ๊ฑฐ ๊ฐ™๋‹ค!

Last updated