๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ŒCS/Web

XSS(Cross-site Scripting) ๊ณต๊ฒฉ

by dar0m! 2021. 4. 25.

๊ฐœ๋…

Cross-site Scripting์˜ ์•ฝ์ž๋กœ ๊ฒŒ์‹œํŒ์ด๋‚˜ ์›น ๋ฉ”์ผ ๋“ฑ์— ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•ด ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ณ ๋ คํ•˜์ง€ ์•Š์€ ๊ธฐ๋Šฅ์ด ์ž‘๋™ํ•˜๊ฒŒ ํ•˜๋Š” ์›น ํ•ดํ‚น ๊ณต๊ฒฉ ๊ธฐ๋ฒ•์ด๋‹ค. ์ฃผ๋กœ ์‚ฌ์šฉ์ž๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•œ ๊ณต๊ฒฉ์ด๋‹ค.

SQL injection๊ณผ ํ•จ๊ป˜ ์›น ์ƒ์—์„œ ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ธ ์ทจ์•ฝ์  ๊ณต๊ฒฉ ๋ฐฉ๋ฒ•์˜ ์ผ์ข…์ด๋‹ค.

์ฃผ๋กœ CSRF๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ข…์ข… CSRF์™€ ํ˜ผ๋™๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋‚˜, XSS๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ฒƒ์ด๊ณ , CSRF๋Š” ํŠน์ •ํ•œ ํ–‰๋™์„ ์‹œํ‚ค๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋‹ค๋ฅด๋‹ค.


(CSS๋Š” Cascading Style Sheets์˜ ์•ฝ์–ด๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์–ด XSS๋ผ๊ณ  ํ•œ๋‹ค.)

 

์ข…๋ฅ˜

  1. Reflected XSS
  2. Stored XSS

1. Reflected XSS

Reflected XSS ๊ณต๊ฒฉ ์ˆœ์„œ ( ์ถœ์ฒ˜ : https://4rgos.tistory.com/1 )

๋ณดํ†ต URL ํŒŒ๋ผ๋ฏธํ„ฐ(ํŠนํžˆ GET ๋ฐฉ์‹)์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋„ฃ์–ด ์„œ๋ฒ„์— ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๊ทธ ์ฆ‰์‹œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ์‹์ด๋‹ค. 

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

ํ›„์ˆ ๋œ ๋‚ด์šฉ ๋Œ€๋ถ€๋ถ„์€ Stored XSS๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. Reflected XSS์˜ ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ € ์ž์ฒด์—์„œ ์ฐจ๋‹จํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„ ์ƒ๋Œ€์ ์œผ๋กœ ๊ณต๊ฒฉ์„ ์„ฑ๊ณต์‹œํ‚ค๊ธฐ ์–ด๋ ต๋‹ค.

2. Stored XSS

Stored XSS ๊ณต๊ฒฉ ์ˆœ์„œ ( ์ถœ์ฒ˜ : https://4rgos.tistory.com/1 )

์›น ์‚ฌ์ดํŠธ์˜ ๊ฒŒ์‹œํŒ์ด๋‚˜ ๋Œ“๊ธ€, ๋‹‰๋„ค์ž„ ๋“ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์„œ๋ฒ„์— ์ €์žฅ๋˜์–ด ์‹คํ–‰๋˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ๊ณต๊ฒฉ์ž๋Š” ๊ฒŒ์‹œํŒ์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•œ ํ›„ ๊ณต๊ฒฉ ๋Œ€์ƒ์ž๊ฐ€ ํ•ด๋‹น ๊ฒŒ์‹œ๊ธ€์„ ํด๋ฆญํ•˜๋„๋ก ์œ ๋„ํ•œ๋‹ค. 

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

 

XSS ํ”ผํ•ด ์‚ฌ๋ก€

  1. ์ฟ ํ‚ค ์ •๋ณด ๋ฐ ์„ธ์…˜ ID ํš๋“
    • ์„ธ์…˜ ID ๋“ฑ์„ ์ฟ ํ‚ค์— ํฌํ•จํ•˜๋Š” ๊ฒฝ์šฐ, XSS ๊ณต๊ฒฉ์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์„ธ์…˜ ID๋ฅผ ํš๋“ํ•ด ๊ณต๊ฒฉ์ž๊ฐ€ ๋ถˆ๋ฒ•์ ์œผ๋กœ ์ •์ƒ ์‚ฌ์šฉ์ž์ธ์ฒ™ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ ํš๋“
    • ๋‹ค์–‘ํ•œ ์•…์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จ์‹œํ‚จ ํ›„ ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์•…์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ๋” ์œ ๋„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์‚ฌ์šฉ์ž์˜ ์‹œ์Šคํ…œ์„ ํ†ต์ œํ•˜์—ฌ ์ค‘์š” ์ •๋ณด๊ฐ€ ํƒˆ์ทจ๋  ์ˆ˜ ์žˆ๋‹ค.
  3. ์•…์„ฑ์ฝ”๋“œ ๋‹ค์šด๋กœ๋“œ (์œ ๋„)
    • ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ ์ž์ฒด๋กœ ์•…์„ฑ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ, ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํฌํ•จ๋œ URL ํด๋ฆญ์„ ์œ ๋„ํ•ด ์•…์„ฑ ํ”„๋กœ๊ทธ๋žจ์„ ๋‹ค์šด๋ฐ›๋Š” ์‚ฌ์ดํŠธ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ๊ฑฐ์ง“ ํŽ˜์ด์ง€ ๋…ธ์ถœ
    • <img> ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด ์›๋ž˜ ํŽ˜์ด์ง€์™€๋Š” ์ „ํ˜€ ๊ด€๋ จ ์—†๋Š” ํŽ˜์ด์ง€๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๊ฐœ์ธ ์ •๋ณด ์œ ์ถœ ๋“ฑ์˜ ์œ„ํ—˜์ด ์žˆ๋‹ค.

 

XSS ๋ฐฉ์ง€๋ฒ•

IPS, IDS, ๋ฐฉํ™”๋ฒฝ์œผ๋กœ๋„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ˆœํžˆ ๋ฌธ์ž๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•๋งŒ์ด ์กด์žฌํ•œ๋‹ค.
  1. ํ•„ํ„ฐ ์ œ์ž‘
    • XSS ๊ณต๊ฒฉ์€ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•œ ๊ฒ€์ฆ์ด ์ œ๋Œ€๋กœ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์•„ ๋ฐœ์ƒํ•˜๋Š” ์ทจ์•ฝ์ ์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•ด ํ•„ํ„ฐ๋งํ•ด์•ผ ํ•œ๋‹ค.
      • HTML ์ฝ”๋“œ๊ฐ€ ์•„๋‹Œ ๋‹จ์ˆœ ๋ฌธ์ž๋กœ ์ธ์‹ํ•˜๊ฒŒ ํ•œ๋‹ค. (HTMLEntities)
      • ๋ชจ๋“  ํŠน์ˆ˜๋ฌธ์ž๋ฅผ HTML ์—”ํ‹ฐํ‹ฐ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.
      • HTML ์—”ํ‹ฐํ‹ฐ๋Š” '&์•ฝ์–ด;' ๋ฐ '&#์ˆซ์ž;' ํ˜•ํƒœ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
        • <์™€ >๋ฅผ ๊ฐ๊ฐ '&lt;'์™€ '&gt;' ๋กœ ๋ณ€ํ™˜
  2. BBCode ์‚ฌ์šฉ
    • ๋”ฐ๋กœ ํ•„ํ„ฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ๋“ค๊ธฐ ํŽธํ•˜๊ณ , ์•ˆ์ •์„ฑ๋„ ๋†’์€ ํŽธ์ด๋‹ค.
  3. ์ฟ ํ‚ค์˜ ๋ณด์•ˆ ์˜ต์…˜ ์‚ฌ์šฉ
    • ์ฟ ํ‚ค ์ƒ์„ฑ์‹œ '๋ณด์•ˆ ์ฟ ํ‚ค'๋ผ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ง€์ •ํ•˜๋ฉด TLS ์ƒ์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  4. ์ฝ˜ํ…์ธ  ๋ณด์•ˆ ์ •์ฑ…(CSP) ์‚ฌ์šฉ
    • ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์— ๋Œ€ํ•œ ์ •์ฑ…(์กฐ๊ฑด)์„ ์„ค์ •ํ•ด ์˜ˆ๋ฐฉํ•˜๋Š” ๋ฐฉ๋ฒ• 
    • ์ถœ์ฒ˜๊ฐ€ ์ž๊ธฐ ์„œ๋ฒ„์ธ ์Šคํฌ๋ฆฝํŠธ๋งŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

์ถœ์ฒ˜ : https://brownbears.tistory.com/250

 

์ฐธ๊ณ 

 

'๐Ÿ“ŒCS > Web' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Web] GET๊ณผ POST ์ฐจ์ด  (0) 2021.08.03
CSRF(Cross-site Request Forgery) ๊ณต๊ฒฉ  (0) 2021.04.25
[Web] param vs query vs body  (2) 2021.04.18
[Web] CORS(Cross-Origin Resource Sharing)  (0) 2021.04.18
[Web] HTTP, HTTPS, HTTP ๋ฒ„์ „  (1) 2021.04.08

๋Œ“๊ธ€