DOM XSS : LAB [2]

DATE : 2024/1/8

โ—DOM XSS in innerHTML sing using source location.search

์ด๋ฒˆ์—๋„ LAB์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉด ๋ธ”๋กœ๊ทธ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒ€์ƒ‰ ๋ฐ”๊ฐ€ ์ œ๊ณต๋˜๊ณ  ์žˆ๋‹ค.

ํŽ˜์ด์ง€์˜ ๋™์ž‘ ๋ฐฉ์‹์„ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ๊ฒ€์ƒ‰ ๋ฐ”์— "hanhxx"๋ฅผ ์ž…๋ ฅํ•ด๋ณด๋ฉด

์ด์ „ LAB๊ณผ ๋™์ผํ•˜๊ฒŒ ๊ฒฐ๊ณผ ๋ฌธ๊ตฌ์™€ search parameter์— ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์ด ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๊ฒฐ๊ณผ ๋ฌธ๊ตฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์–ด์ง€๋Š” ์ง€ Response Packet์„ ํ™•์ธํ•ด๋ณด๋ฉด

document.write()๊ฐ€ ์•„๋‹Œ innerHTML ์†์„ฑ์„ ํ™œ์šฉํ•ด <span> tag์— ๊ฒ€์ƒ‰ ๋‚ด์šฉ์„ ๋„ฃ์Œ์œผ๋กœ์จ

๊ฒ€์ƒ‰์–ด๋ฅผ ๋ฌธ๊ตฌ์— ์‚ฝ์ž…ํ•˜๋Š” ๋กœ์ง์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

innerHTML์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด

<span id="searchMessage">INNER_HTML</span>

span tag ์•ˆ์œผ๋กœ query ๊ฐ’์ด ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋Š”๋ฐ

๋งŒ์•ฝ ํƒœ๊ทธ๋ฅผ ์ƒˆ๋กœ์ด ๋งŒ๋“ค๊ณ , ์ด ํƒœ๊ทธ ์†์„ฑ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค๋ฉด

์ž‘์„ฑ๋˜์–ด ์žˆ๋Š” script๋ฅผ ์ด์šฉํ•ด ์ˆ˜์›”ํ•˜๊ฒŒ XSS ๊ณต๊ฒฉ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์„ ์ง€๋„ ๋ชจ๋ฅธ๋‹ค..!

<img src=1 onerror="alert(1)">

<img> tag์˜ ๊ฒฝ์šฐ์—๋Š” src ์†์„ฑ์— ์ž‘์„ฑ๋œ ๊ฒฝ๋กœ๋กœ ์ด๋ฏธ์ง€๋ฅผ ์š”์ฒญํ•ด ํ™”๋ฉด์— ์ถœ๋ ฅํ•˜๊ฒŒ ๋˜๋Š”๋ฐ

๋งŒ์•ฝ ์ด ๊ฒฝ๋กœ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ฃผ์–ด์ง€์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.

์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ ์ง€์ •ํ•˜๋Š” ์†์„ฑ, onerror์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด

src์— 1์„ ๋„ฃ์Œ์œผ๋กœ์จ ์˜๋„์ ์œผ๋กœ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ ์‹œ์ผœ ๊ฒฐ๊ณผ์ ์œผ๋กœ alert(1)์ด ์‹คํ–‰๋˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฒƒ.

search parameter๋กœ <img> tag์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฒŒ ๋˜๋ฉด

์„ฑ๊ณต์ ์œผ๋กœ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๐Ÿ‘

Last updated