CS

XSS(Cross-Site Scripting)

YunCow 2023. 2. 26. 02:10

XSS (ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ…)

์ด๋ฒˆ ๋ฉด์ ‘์—์„œ XSS๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•ด ๋‹ฌ๋ผ๋Š” ์งˆ๋ฌธ์„ ๋ฐ›๊ณ  ๋ณด์•ˆ์  ์ด์Šˆ๋ผ๊ณ ๋งŒ ์•Œ๊ณ  ์žˆ์—ˆ๋˜ ๋ถ€๋ถ„์— ๋ฐ˜์„ฑํ•˜๋ฉฐ ๊ธฐ๋กํ•ด๋ณธ๋‹ค.๐Ÿ˜…

 

 

XSS๋ž€ ?

์›น ์ƒ์—์„œ ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ธ ์ทจ์•ฝ์  ๊ณต๊ฒฉ ๋ฐฉ๋ฒ•์ด๋‹ค. ์•…์˜์ ์ธ ์‚ฌ์šฉ์ž๊ฐ€ ๊ณต๊ฒฉํ•˜๋ ค๋Š” ์‚ฌ์ดํŠธ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋„ฃ๋Š” ๊ธฐ๋ฒ•์„ ๋งํ•˜๋ฉฐ ๊ณต๊ฒฉ์— ์„ฑ๊ณตํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•œ ์‚ฌ์šฉ์ž๋Š” ์‚ฝ์ž…๋œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๊ณ , ์˜๋„์น˜ ์•Š์€ ํ–‰๋™์„ ์ˆ˜ํ–‰์‹œํ‚ค๊ฑฐ๋‚˜ ์ฟ ํ‚ค, ์„ธ์…˜ ํ† ํฐ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ํƒˆ์ทจํ•œ๋‹ค.

 

๊ณต๊ฒฉ ๋ฐฉ๋ฒ• โš”๏ธ

Stored XSS (์ €์žฅํ˜• ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ…)

Stored Xss ๊ณต๊ฒฉ์€ ๋ณด์•ˆ์ด ์ทจ์•ฝํ•œ ์„œ๋ฒ„์— ์•…์„ฑ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ €์žฅํ•˜์—ฌ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

์„œ๋ฒ„์— ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๊ฒ ์ง€๋งŒ ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์€ ๊ฒŒ์‹œํŒ, ์‚ฌ์šฉ์ž ํ”„๋กœํ•„, ๋Œ“๊ธ€ ๋“ฑ์„ ํ†ตํ•ด ์„œ๋ฒ„์— ์ €์žฅํ•œ๋‹ค.

 

์˜ˆ์‹œ)

์ถœ์ฒ˜: https://xss-game.appspot.com/level2

ํ•ด๋‹น ์‚ฌ์ดํŠธ๋Š” xss ๊ณต๊ฒฉ์„ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๊ฐ„๋‹จํ•˜๊ฒŒ ํ…Œ์ŠคํŠธ ํ•˜๋ผ๊ณ  ๋งŒ๋“  ์‚ฌ์ดํŠธ ์ธ๊ฒƒ ๊ฐ™๋‹ค.

๋ ˆ๋ฒจ2 ๋ฌธ์ œ๋ฅผ ๋ณด๋ฉด ๊ธ€์„ ์ž…๋ ฅํ•˜๋ฉด ๋‚ด๊ฐ€ ์“ด๊ธ€์ด ์„œ๋ฒ„์— ์ €์žฅ ๋˜๋Š” ํ˜•์‹์ด๋‹ค. ์ด๊ฑด Stored XSS ์˜ ์กฐ๊ฑด์ธ ์„œ๋ฒ„์— ๋‚ด๊ฐ€ ์“ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ €์žฅํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

์ถœ์ฒ˜: https://xss-game.appspot.com/level2

<script>alert('1')</script> ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  Share status! ๋ฅผ ๋ˆŒ๋Ÿฌ๋ดค์ง€๋งŒ ์•„๋ฌด๊ฒƒ๋„ ๋‚˜์˜ค์ง€์•Š๋Š”๋‹ค. ์„œ๋ฒ„์— script ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์„ ๋ง‰์•„๋†“์€ ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค.

์ถœ์ฒ˜:https://xss-game.appspot.com/level2

๊ธฐ์กด์— ์žˆ๋˜ ๊ฒŒ์‹œ๊ธ€์„ ์‚ดํŽด๋ณด๋ฉด ํ…์ŠคํŠธ ์•ˆ์—์„œ htmlํƒœ๊ทธ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰ html ํƒœ๊ทธ๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š”๊ฑด๋ฐ img ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•˜๋ฉด onerror ์ด๋ฒคํŠธ๋ฅผ ํ†ตํ•ด ๋‚ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค!

์ถœ์ฒ˜:https://xss-game.appspot.com/level2

 

Reflected XSS (๋ฐ˜์‚ฌํ˜• ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ…)

Reflected XSS๋Š” ํŠน์ • ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ํ†ตํ•ด์„œ ๊ณต๊ฒฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฒ€์ƒ‰, ์—๋Ÿฌ๋ฉ”์‹œ์ง€, URL ๋“ฑ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์ด ํŽ˜์ด์ง€์— ๋ฐ˜์‚ฌ๋˜์–ด ๋…ธ์ถœ๋˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น URL์— ๊ณต๊ฒฉ์ฝ”๋“œ๋ฅผ ํฌํ•จ์‹œ์ผœ ํ”ผ์‹ฑ๋ฉ”์ผ ๋“ฑ์„ ํ†ตํ•˜์—ฌ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ณต๊ฒฉํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜:https://xss-game.appspot.com/level1
์ถœ์ฒ˜:https://xss-game.appspot.com/level1

input์ฐฝ์— ์ž…๋ ฅํ•œ ๊ฐ’์ด URL์— ๊ทธ๋Œ€๋กœ ์ ์šฉ๋˜๋Š” ๋ชจ์Šต์„ ๋ณผ ์ˆ˜์žˆ๋‹ค. ์ด ํƒœ๊ทธ์— ์•…์˜์  ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ URL์„ ๋ณต์‚ฌํ•œ ํ›„ ๋ฉ”์ผ๋กœ ๋ณด๋‚ด๊ฒŒ ๋˜๋ฉด ๋งํฌ๋ฅผ ํด๋ฆญ ์‹œ ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜๊ฒŒ ๋œ๋‹ค.

์ถœ์ฒ˜:https://xss-game.appspot.com/level1
์ถœ์ฒ˜:https://xss-game.appspot.com/level1

alert ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋„ฃ์€ ํ…Œ์ŠคํŠธ์‚ฌ์ดํŠธ : https://xss-game.appspot.com/level1/frame?query=%3Cscript%3Ealert(%27%EC%BF%A0%ED%82%A4%ED%83%88%EC%B7%A8%27)%3C/script%3E

 

๋งŒ์•ฝ ์œ„ ๋งํฌ๊ฐ€ ์•…์˜์  ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์žˆ๋Š” ์ฝ”๋“œ์˜€๊ณ  ๋ฉ”์ผ๋กœ ๋ณด๋‚ด์กŒ์„๋•Œ ํด๋ฆญํ–ˆ๋‹ค๋ฉด ๋‚ด ๋ธŒ๋ผ์šฐ์ €์˜ ์ฟ ํ‚ค๋ฅผ ํƒˆ์ทจ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Dom Based XSS (๋” ๊ธฐ๋ฐ˜ ํฌ๋กœ์Šค ์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŒ…)

DOM ๊ธฐ๋ฐ˜ XSS ๊ณต๊ฒฉ์€ ๋ณด์•ˆ์— ์ทจ์•ฝํ•œ JavaScript ์ฝ”๋“œ๋กœ DOM ๊ฐ์ฒด๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐœ์ƒ. ์ฆ‰ http ์‘๋‹ต ๊ฐ’์—๋Š” ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์•„ ์„œ๋ฒ„์ธก์ด ์•„๋‹Œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ณต๊ฒฉ์ด๋‹ค.

ํ•ด๋‹น ๊ณต๊ฒฉ๋„ ๋™์ผํ•˜๊ฒŒ ํ”ผ์‹ฑ๋ฉ”์ผ ๋“ฑ์„ ํ†ตํ•ด ์ „๋‹ฌ๋œ ๋งํฌ๋ฅผ ํด๋ฆญ ์‹œ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ์œ„์— ๋ฐ˜์‚ฌํ˜• XSS์™€ ์กฐ๊ธˆ ๋‹ค๋ฅด๋‹ค.

 

๋ฐ˜์‚ฌํ˜• XSS : URL์ฃผ์†Œ์™€ ํ•จ๊ป˜ ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ „๋‹ฌ -> ์„œ๋ฒ„๋Š” URL์— ๋‹ด๊น€ ์Šคํฌ๋ฆฝํŠธ ๋ฌธ์ž์—ด์„ ์ถ”์ถœ -> ์„œ๋ฒ„์—์„œ ์‘๋‹ตํ•  HTML ๋ฌธ์„œ์— ์•…์„ฑ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ทธ๋Œ€๋กœ ๋‹ด์•„ ๋น„์ •์ƒ HTML์„ ์ „๋‹ฌํ•ด์คŒ.

 

๋” ๊ธฐ๋ฐ˜ XSS : ์„œ๋ฒ„๋กœ ๋ถ€ํ„ฐ ์ •์ƒ์ ์ธ HTML ๋ฌธ์„œ ์ „๋‹ฌ๋ฐ›์Œ -> ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTML ํŒŒ์‹ฑ -> ํŒŒ์‹ฑ ์ค‘ URL์— ๋‹ด๊ธด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”์ถœ -> ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰

 

ํ•ด๋‹น ๊ณต๊ฒฉ์€ ์ฐธ๊ณ ํ• ๋งŒํ•œ ์˜ˆ์‹œ ์‚ฌ์ดํŠธ๋ฅผ ์ฐพ๊ฒŒ๋˜๋ฉด ์ถ”๊ฐ€ํ•˜๊ฒ ๋‹ค.

 

๋Œ€์‘ ๋ฐฉ์•ˆ ๐Ÿ› ๏ธ

1. ์ž…๋ ฅ๊ฐ’ ๊ฒ€์ฆ

์ž…๋ ฅ๋ฐ์ดํ„ฐ์˜ ๊ธธ์ด๋ฅผ ์ œํ•œํ•˜๊ฑฐ๋‚˜ ์ง€์ •๋œ ๋ฌธ์ž๋˜๋Š” ํ˜•์‹์œผ๋กœ ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๊ทœ์น™์„ ๋ฒ—์–ด๋‚œ ์ž…๋ ฅ๊ฐ’๋“ค์€ ๋ฌดํšจํ™” ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•.

 

2. ์ถœ๋ ฅ๊ฐ’ ๊ฒ€์ฆ

์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์ด ์ถœ๋ ฅ๋  ๋•Œ <, >, & ๋“ฑ๋“ฑ ๋‚ด์šฉ์— ์žˆ๋Š” HTML, ๋˜๋Š” ์Šคํฌ๋ฆฝํŠธ ๊ตฌ๋ฌธ์œผ๋กœ ํ•ด์„๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๊ฐ’๋“ค์„ HTML entitycode ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•.

 

3. ๋ณด์•ˆ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ

AntiXSS, OWASP ESAPI ๋“ฑ XSS ์ทจ์•ฝ์ ์„ ์˜ˆ๋ฐฉํ•ด์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์„ ํ™œ์šฉํ•œ๋‹ค.

 

XSS๊ณต๊ฒฉ ๋ฐฉ์ง€ 7๊ณ„๋ช…

  1. ํ—ˆ์šฉ๋œ ์œ„์น˜๊ฐ€ ์•„๋‹Œ ๊ณณ์— ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  2. ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ๋Š” ๊ฒ€์ฆ์„ ํ•˜์—ฌ๋ผ
  3. HTML์†์„ฑ์— ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†๋„๋ก ํ•ด๋ผ
  4. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๊ฐ’์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†๋„๋ก ํ•ด๋ผ
  5. CSS์˜ ๋ชจ๋“  ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๊ฐ’์— ๋Œ€ํ•˜์—ฌ ๊ฒ€์ฆํ•ด๋ผ
  6. URLํŒŒ๋ผ๋ฏธํ„ฐ์— ์‹ ๋ขฐํ•  ์ˆ˜์—†๋Š” ๊ฐ’์ด ์žˆ๋Š”์ง€ ๊ฒ€์ฆํ•ด๋ผ
  7. HTML์ฝ”๋“œ๋ฅผ ์ „์ฒด์ ์œผ๋กœ ํ•œ๋ฒˆ๋” ๊ฒ€์ฆํ•ด๋ผ

XSS ๊ณต๊ฒฉ์€ ์›Œ๋‚™ ๋‹ค์–‘ํ•˜๊ณ  ๋งŽ์•„ ๋ชจ๋“  ์˜ˆ๋ฐฉ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ํ•œ๋‹ค. ๊ฐœ๋ฐœ์ž์˜ ๊พธ์ค€ํ•œ ๊ด€๋ฆฌ์™€ ๊ฐ์‹œ๊ฐ€ ํ•„์š”ํ•œ ๋ถ€๋ถ„์ธ ๊ฒƒ ๊ฐ™๋‹ค.