Reflected XSS : LAB [2]

DATE : 2023/1/3

โ—Reflected XSS into attribute with angle brackets HTML-encoded

์ด๋ฒˆ LAB๋„ ์•ž์„œ ํ’€์–ด๋ณธ Reflected XSS : LAB [1]๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ Reflected XSS์— ๊ด€ํ•œ ๋ฌธ์ œ์ด๋‹ค.

ํŽ˜์ด์ง€ ์ค‘์•™์— ์œ„์น˜ํ•œ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด ํŒ์—… ์ฐฝ์„ ๋„์šฐ๋ฉด ๋œ๋‹ค.

์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๊ธฐ ์ „, ํŽ˜์ด์ง€๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š” ์ง€ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ„๋‹จํ•œ ํ‚ค์›Œ๋“œ๋ฅผ ๊ฒ€์ƒ‰ํ•ด๋ดค๋‹ค.

์‚ฌ์šฉ์ž๊ฐ€ "hello"๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ ๊ฒ€์ƒ‰ ๋ฐ” ์ƒ๋‹จ์—

0 search results for 'hello'

๋ฌธ๊ตฌ๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ด๋•Œ Packet์„ ํ™•์ธํ•ด๋ณด๋ฉด ์ด์ „ LAB๊ณผ ๋‹ฌ๋ผ์ง„ ์ ์„ ๋ˆˆ์น˜์ฑŒ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ๐Ÿ˜

์›๋ž˜๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ–ˆ๋˜ ๊ฒ€์ƒ‰ ๋‚ด์šฉ์ด ๊ฒ€์ƒ‰ ๋ฐ” value๋กœ ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

<input type=text placeholder='Search the blog...' name='search' value='hello'>

๊ทธ๋ž˜์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒ€์ƒ‰์„ ํ•œ ๋’ค์—๋„ ๊ฒ€์ƒ‰ ๋ฐ”์— ์ž…๋ ฅํ•œ ๊ฐ’์ด ๋‚จ์•„์žˆ๋˜ ๊ฒƒ.

์ด๋ฒˆ ๋ฌธ์ œ๋Š” ์ด ๋ถ€๋ถ„์„ ์ด์šฉํ•ด ํŒ์—… ์ฐฝ์„ ๋„์šธ ๊ฒƒ์ด๋‹ค.

๋ฌธ์ œ ์„ค๋ช…์„ ์ฝ์–ด๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ ์ด๋ฒˆ ๋ฌธ์ œ๋Š” angle Bracket, ์ฆ‰ ํƒœ๊ทธ๋ฅผ ์—ด๊ณ  ๋‹ซ๋Š” ๊ธฐํ˜ธ < > ๊ฐ€

๋Œ€์ฒด ๋ฌธ์ž๋กœ ์น˜ํ™˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ง์ ‘ <script> tag๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์—†๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ์œ„์น˜์—

์ ์ ˆํžˆ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋„ฃ์–ด ํŒ์—… ์ฐฝ์„ ๋„์šฐ๋Š” ์ „๋žต์„ ์„ ํƒํ•œ ๊ฒƒ!

<input type=text placeholder="Search the blog..." name="search" value="___">

ํ˜„์žฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์€ value ์†์„ฑ์œผ๋กœ ๋“ค์–ด๊ฐ€๋ฉด์„œ ๋”ฐ์˜ดํ‘œ์— ๋‘˜๋Ÿฌ ์Œ“์ด๊ฒŒ ๋œ๋‹ค.

๋”ฐ๋ผ์„œ ๋”ฐ์˜ดํ‘œ๋ฅผ ๋งˆ๊ฐํ•˜์ง€ ์•Š๊ณ  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ทธ๋Œ€๋กœ ์ž‘์„ฑํ•˜๋ฉด ๋ฌธ์ž์—ด์ด ๋˜์–ด๋ฒ„๋ฆฌ๋Š” ์‚ฌํƒœ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋”ฐ์˜ดํ‘œ๋กœ ์ง์„ ๋งž์ถฐ ์ฃผ๊ณ  HTML tag์—์„œ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์—

์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ด์ค„ ๊ฒƒ์ด๋‹ค.

/?search=" onclick="alert(1)

> <input type=text ~~~ value="___" >
> <input type=text ~~~ value="" onclick="alert(1)" >

value ๋นˆ์นธ์— search parameter ๊ฐ’์ด ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋ฉด์„œ ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ์‘๋‹ต ํŽ˜์ด์ง€์—๋Š”

input tag๋ฅผ ํด๋ฆญํ•˜๋ฉด ํŒ์—… ์ฐฝ์ด ๋œจ๋Š” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ ์šฉ๋œ๋‹ค.

(onclick ๋ง๊ณ ๋„ onmouseover ๋“ฑ ๋‹ค๋ฅธ ์ด๋ฒคํŠธ ์†์„ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.)

LAB ํ™”๋ฉด์œผ๋กœ ๋‹ค์‹œ ๋Œ์•„์™€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•ด๋ณด์ž.

์‚ฝ์ž…ํ•œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฐ”๋กœ ์‘๋‹ต ํŽ˜์ด์ง€์— ์ ํ˜€์ ธ ์žˆ๋Š” ๊ฑธ ๋ณด๋ฉด Reflected XSS์ž„์„ ํ™•์‹ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•œ ํ›„ ์‚ฌ์šฉ์ž๊ฐ€ ๊ฒ€์ƒ‰ ๋ฐ”๋ฅผ ํด๋ฆญํ•˜๊ฒŒ ๋˜๋ฉด <input> tag์— ์ ์–ด๋‘” ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜์–ด

ํŒ์—… ์ฐฝ์ด ๋œจ๋Š” ๊ฑธ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

๋ณดํ†ต์€ "์Šคํฌ๋ฆฝํŠธ ์‚ฝ์ž…ํ•œ๋‹ค"๊ณ  ํ•˜๋ฉด <script> tag๋ฅผ ๋– ์˜ฌ๋ฆฌ๋‹ค ๋ณด๋‹ˆ

๊ทธ ์™ธ์—๋„ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์ด ์žˆ์Œ์„ ๋ณด์—ฌ์ฃผ๋Š” ์ข‹์€ ์˜ˆ์‹œ์˜€๋‹ค.

โ•๋ฌธ์ œ์—์„œ๋Š” onmouseover ์†์„ฑ์œผ๋กœ ํŒ์—… ์ฐฝ์„ ๋„์›Œ์•ผ solved ์ฒ˜๋ฆฌํ•ด์ค€๋‹ค.

Last updated