๊ด€๋ฆฌ ๋ฉ”๋‰ด

<Hello Hosung๐Ÿ˜Ž/>

[CS ์ง€์‹]XSS(ํฌ๋กœ์Šค์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŠธ) ๋ณธ๋ฌธ

๐Ÿ“– CS Information

[CS ์ง€์‹]XSS(ํฌ๋กœ์Šค์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŠธ)

์ขŒ์ถฉ์šฐ๋Œ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ผ๊ธฐ๐Ÿง 2024. 8. 15. 20:26

 

ํฌ๋กœ์Šค์‚ฌ์ดํŠธ ์Šคํฌ๋ฆฝํŠธ๋Š” SQL Injection๊ณผ ๋‹ค๋ฅด๊ฒŒ JSํƒœ๊ทธ ๊ตฌ๋ฌธ์˜ ์˜ค๋ฅ˜๋ฅผ ์ด๋ฅดํ‚ค๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๊ฒŒ์‹œํŒ์— ์ž…๋ ฅ์ฐฝ์— ์ •์ƒ์ ์ธ ์ œ๋ชฉ์„ ์ž…๋ ฅํ•˜๋Š”๊ฒŒ ์•„๋‹Œ 

<script>alert("XSS ๊ณต๊ฒฉ!!!");</script>

 

์ด๋Ÿฐ์‹์œผ๋กœ ์ž…๋ ฅํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ๊ฒŒ์‹œํŒ์— ๋‚ด์šฉ์—๋Š” ๋‚ด์šฉ์ด ๋ณด์—ฌ์ฃผ๋Š”๊ฒƒ์ด ์•„๋‹Œ ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜์–ด ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ์˜คํ”ˆํ• ๋•Œ ๋งˆ๋‹ค Alert ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚˜ํƒ€๋‚  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฐ–์— location.href ๋“ฑ์„ ํ™œ์šฉํ•˜์—ฌ ํ•ด๋‹น ํŽ˜์ด์ง€๋ฅผ ์ ˆ๋•Œ ์—ด์ˆ˜ ์—†๊ฒŒ ํ• ์ˆ˜๋„ ์žˆ๊ฒ ๋„ค์š”...

์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์„ ๋ง‰๊ธฐ์œ„ํ•ด์„  ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•๋“ค์ด ์žˆ์ง€๋งŒ ์ €๋Š” ํ•ด๋‹น <> ํƒœ๊ทธ์˜ ๋ฌธ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด ํƒœ๊ทธ๋กœ ์ธ์‹ํ• ์ˆ˜ ์—†๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

	var filter = title.replace(/</g, "&lt;").replace(/>/g, "&gt;"); //xss ํ•„ํ„ฐ
	title = filter; //xss ํ•„ํ„ฐ๋œ ๋‚ด์šฉ ๋„ฃ๊ธฐ   < → ๋ฌธ์žํ˜•ํƒœ์˜ '<', > → ๋ฌธ์žํ˜•ํƒœ์˜ '>'
	location.href = "UpdateSql.jsp?no="+no+"&title=" + title +"&content=" + result;

 

filter ์— ๋“ค์–ด์˜จ ๊ฐ’์ด ๊ฒŒ์‹œํŒ์— ์ œ๋ชฉ์— ๋„ฃ์„ ์ž…๋ ฅ๊ฐ’์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.
ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— < ๋‚˜ > ๋ฌธ์ž์—ด์ด ์žˆ์œผ๋ฉด ๋ฌธ์žํ˜•ํƒœ๋กœ ๋ณ€๊ฒฝํ•˜์—ฌ ํƒœ๊ทธ๋กœ ์ธ์‹๋˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.
๊ฒŒ์‹œํŒ์œผ๋กœ ์˜ˆ๋ฅผ ๋“ค์—ˆ์ง€๋งŒ ๋‚ด๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ํƒœํฌ ํ˜•ํƒœ๋กœ ๋ณด์—ฌ์ฃผ๋Š” ๊ณณ์€ XSS ๊ณต๊ฒฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ˆ ์ฃผ์˜ํ•˜์—ฌ ๊ฐœ๋ฐœํ•˜์‹œ๋ฉด ๋ ๊ฑฐ๊ฐ™์Šต๋‹ˆ๋‹ค.