Security Study/Web

[์›น์ทจ์•ฝ์ ] XSS ํ•˜๋‹ค๋ณด๋‹ˆ...

๐“›๐“พ๐“ฌ๐“ฎ๐“ฝ๐“ฎ_๐“ข๐“ฝ๐“ฎ๐“ต๐“ต๐“ช 2023. 7. 20.
728x90
๋ฐ˜์‘ํ˜•

ํ•ด๋‹น ๋ธ”๋กœ๊ทธ๋Š” ํ•ดํ‚น ๋ฐ ๋ณด์•ˆ ๋ธ”๋กœ๊ทธ๋กœ ๊ณต๋ถ€ ๋ฐ ์—ฐ๊ตฌ์šฉ์œผ๋กœ ์ž‘์„ฑ๋˜์–ด์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์˜ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ดํ‚น ์‹œ๋„ ๋ฐ ์‹ค์ œ ๊ณต๊ฒฉ์„ ์‹œ๋„ํ•˜์—ฌ ์ผ์–ด๋‚˜๋Š” ๋ชจ๋“  ์ฑ…์ž„์€ ๋ณธ์ธ(๋”ฐ๋ผํ•œ์ž)์—๊ฒŒ ์žˆ์Œ์„ ์•Œ๋ ค๋“œ๋ฆฌ๋ฉฐ, ๊ธ€์“ด์ด๋Š” ์•„๋ฌด๋Ÿฐ ์ฑ…์ž„์„ ์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ผญ ๊ณต๋ถ€ ๋ฐ ์—ฐ๊ตฌ์šฉ์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ์ฃผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

ํ™๋ณด๊ธ€

 

์ตœ๊ทผ์— ์›น์ทจ์•ฝ์  ๊ด€๋ จ ์—…๋ฌด๋ฅผ ํ•˜๋‹ค๊ฐ€ ์ฐพ์€ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

๋จผ์ € XSS์˜ ๊ฒฝ์šฐ ๋‹ค์–‘ํ•œ ๊ณต๊ฒฉ์ด ๊ฐ€๋Šฅํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์šฐํšŒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋งŒํผ ๋ง‰๋Š”๋ฐฉ๋ฒ• ๋˜ํ•œ ๋‹ค์–‘ํ•˜๋‹ค.

 

ํ”ํžˆ github์—์„œ xss cheatsheet ๋งŒ ๊ฒ€์ƒ‰ํ•ด๋„ ๋ช‡๋ฐฑ๊ฐœ์—์„œ ๋ช‡์ฒœ๊ฐœ์˜ payload ๋“ค์ด ๋‹ค์–‘ํ•˜๊ฒŒ ๋‚˜์˜จ๋‹ค.

๋ฐ˜๋Œ€๋กœ ์ƒ๊ฐํ•˜๋ฉด ๊ทธ๋งŒํผ ์•Œ๋ ค์ง„ payload์ธ ๋งŒํผ ์ •๋ณด๋ณดํ˜ธ์žฅ๋น„์—์„œ ์ฐจ๋‹จ์ด ๋  ํ™•๋ฅ ์ด ๋†’๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

 

์ทจ์•ฝ์  ์ง„๋‹จ์„ ํ•˜๋‹ค๋ณด๋‹ˆ ๊ฒŒ์‹œ๊ธ€์„ ํ†ตํ•ด XSS ๊ฐ€ ๊ฐ€๋Šฅํ•  ๊ฒƒ๊ฐ™์•„ ์ด๋Ÿฐ ์ €๋Ÿฐ๋ฐฉ๋ฒ•์„ ํ•ด๋ณด์•˜๋‹ค. ๊ฒฐ๊ณผ๋Š” ์‹คํŒจํ–ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œ๋„๋ฅผ ํ•ด๋ณด์•˜๋Š”๋ฐ ์ด๋ฏธ์ง€๋ฅผ ํ†ตํ•˜์—ฌ ํ•ด๋ณด๋ ค๊ณ  ํ–ˆ๋‹ค.

<script>alert(document.cookie);>
<img src=0 onerror=alert(document.cookie);>

ํ•ด๋‹น ๊ตฌ๋ฌธ์€ ๋‹น์—ฐํ•˜๊ฒŒ ๋จนํžˆ์ง€์•Š์•˜๋‹ค.

์ข€๋” ์ƒ์„ธํžˆ ๋งํ•˜๋ฉด script๊ตฌ๋ฌธ์€ ์‹คํ–‰๋˜์ง€์•Š์•˜๊ณ  img src๋Š” ๊ฐ€๋Šฅํ–ˆ๋‹ค. img src์˜ ๊ฒฝ์šฐ 0์ด๋ผ๋Š” ์‚ฌ์ง„์ด ์—†์–ด ์—‘๋ฐ•์ด ๋œจ๋Š” ๊ฒƒ๊นŒ์ง€๋งŒ ๋˜์–ด ๋’ค์— javascript event handler๋Š” ์‹คํ–‰๋˜์ง€์•Š์•˜๋‹ค. ์ด๋ฒคํŠธํ•ธ๋“ค๋Ÿฌ์˜ ๊ฒฝ์šฐ ๊ณต๋ฐฑ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๋ฉด์„œ ์‚ญ์ œ๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜์˜€๋‹ค.

 

๋งŒ์•ฝ ์‚ฌ์ง„์„ ์˜ฌ๋ฆด์ˆ˜ ์žˆ๋Š” ์‚ฌ์ง„์—…๋กœ๋“œ์‹œ ํ”„๋ก์‹œ๋กœ ์žก์•„์„œ ๋„์ค‘์— ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•ด๋ณด๋ คํ–ˆ์œผ๋‚˜ ํ•ด๋‹น ๊ฒŒ์‹œํŒ์˜ ์—๋””ํ„ฐ์—๋Š” ์‚ฌ์ง„์„ ์˜ฌ๋ฆฌ๋Š” ๊ธฐ๋Šฅ์ž์ฒด๊ฐ€ ์—†์–ด์กŒ๋‹ค. ์–ด๋Š ํŠน์ •๋ฒ„์ „๋ถ€ํ„ฐ ๋ณด์•ˆ์ด์Šˆ๋กœ ์ธํ•˜์—ฌ ์—†์–ด์กŒ๋‹ค๊ณ  ํ•œ๋‹ค.

 

๊ทธ๋ž˜์„œ ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ƒ๊ฐํ•˜๋‹ค๊ฐ€ ํ•œ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ XSS๋ฅผ ์„ฑ๊ณต ์‹œ์ผฐ๋‹ค.

๊ทธ ๋ฐฉ๋ฒ•์€ hyperlink๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•์ด์˜€๋‹ค. ํ•˜์ดํผ๋งํฌ๋ฅผ ๊ฑธ๊ฒŒ ๋˜๋ฉด a href ํƒœ๊ทธ๊ฐ€ ์‹คํ–‰๋ ๊ฒƒ์ด๋‹ค. ์ด๋•Œ a href=javascript:~~~ ์ด๋Ÿฐ์‹์œผ๋กœ ๊ตฌ๋ฌธ์„ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค. ๋ฌผ๋ก  ๊ทธ๋ƒฅ javascript๋ฅผ ์‚ฝ์ž…ํ•˜๊ฒŒ ๋˜๋ฉด javascript๋ฌธ์ž์—ด๋งŒ์œผ๋กœ ํƒ์ง€๋˜์–ด ๋ง‰ํžˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ 99%๋‹ค. javascript์˜ ์šฐํšŒ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๋ฒˆ ์‹œ๋„ํ•ด๋ณด๋ฉด์„œ ์ฐพ์•„๋ณด๋ฉด ๋ ๋“ฏํ•˜๋ฉฐ ํ•ด๋‹น ๊ธ€์—์„œ๋Š” ์‹ค์ œ๋กœ ๊ณต๊ฒฉ์ด ๋จนํžˆ๋Š” ํŽ˜์ด์ง€๋“ค๋„ ์กด์žฌํ•  ๊ฒƒ๊ฐ™์•„ ์šฐํšŒํ•˜๋Š” ๊ฒƒ์€ ๋นผ๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

๋‚˜๋Š” ์ทจ์•ฝ์ ์„ ์ฐพ๊ฑฐ๋‚˜ ์ ๊ฒ€์„ ํ• ๋•Œ ์•„๋ฌด๋Ÿฐ ์ทจ์•ฝ์ ์ด ์—†์œผ๋ฉด ๊ทธ๋ƒฅ ๋ฉํ•˜๋‹ˆ ํ™ˆํŽ˜์ด์ง€๋ฅผ ๋ฐ”๋ผ๋ณด๊ณ  ์žˆ๋Š” ์Šต๊ด€์ด ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๋ณด๋ฉด ์—ฅ? ํ•˜๋ฉด์„œ ๊ฐ€๋” ๋– ์˜ค๋ฅผ๋•Œ๊ฐ€ ์žˆ๋Š”๋ฐ ๊ทธ๋Ÿฌ๋ฉด์„œ ํ•˜๋‚˜์”ฉ ํ•˜๋‚˜์”ฉ ์ฐพ์•„๊ฐ€๋Š” ๊ฒƒ๊ฐ™๋‹ค.

 

๋‚จ๋“ค์ด ๋ณด๋ฉด ์–ด๋ ต์ง€์•Š์€ ๊ตฌ๋ฌธ์ด๊ณ  ๋ฐฉ๋ฒ•์ผ์ˆ˜ ์žˆ์ง€๋งŒ ๊ณต๊ฒฉ์ด ๊ฐ€๋Šฅํ•œ ํŽ˜์ด์ง€๋ผ๋ฉด ์‰ฌ์šฐ๋ฉด์„œ ํฌ๋ฆฌํ‹ฐ์ปฌํ•œ ์ทจ์•ฝ์ ์ด ์•„๋‹๊นŒ ์ƒ๊ฐํ•ด๋ณธ๋‹ค.

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€