์ƒˆ์†Œ์‹

Game/Bee-box

[Bee-box] Stored Xss - Blog

  • -
๋ฐ˜์‘ํ˜•

์ด๋ฒˆ ํฌ์ŠคํŒ…์€ 'Stored Xss - Blog' ์ž…๋‹ˆ๋‹ค.

 

์‹ค์Šตํ•˜๋Š” ๋ชจ๋“  ๊ณต๊ฒฉ์€ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•˜์‹œ๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.

ํ—ˆ์šฉ๋ฐ›์ง€ ์•Š์€ ์„œ๋น„์Šค ๋Œ€์ƒ์— ํ•ดํ‚น์„ ์‹œ๋„ํ•˜๋Š” ํ–‰๋™์€ ๊ธˆ์ง€ํ•˜๋ฉฐ,

๋ชจ๋“  ๋ฒ•์  ์ฑ…์ž„์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์žˆ๋Š” ๊ฒƒ์„ ๋ช…์‹ฌํ•ด์ฃผ์„ธ์š”.

 


๋‚œ์ด๋„ ํ•˜

 

ํŽ˜์ด์ง€์— ์ ‘์†

 

 

 

xss ํŽ˜์ด์ง€๋Š” ํ…์ŠคํŠธ ์ž…๋ ฅ ๊ณต๊ฐ„์— ๋‚ด์šฉ์„ ์ž…๋ ฅํ•˜๊ณ  'submit' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ๊ทธ ์•„๋ž˜์— ์žˆ๋Š” ํ…Œ์ด๋ธ”์— ์ž…๋ ฅํ•œ

๋‚ด์šฉ์„ ์ €์žฅํ•œ๋‹ค.

 

 

์ € ํ…์ŠคํŠธ ์ž…๋ ฅ ๊ณต๊ฐ„์— 'Succeed'๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด๋ณด์ž.

 

 

<script>alert('Succeed');</script>

 

 

์ด ๋ฌธ์ž๋ฅผ ์ž…๋ ฅํ•ด์ฃผ๊ณ  submit์„ ํด๋ฆญํ•˜๋ฉด

 

 

 

 

 

์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜์–ด ํŽ˜์ด์ง€์— ๊ฒฝ๊ณ ์ฐฝ์œผ๋กœ์„œ Succeed๋ผ๋Š” ๋ฉ”์„ธ์ง€๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

(์œ„ ์Šคํฌ๋ฆฝํŠธ ๋ฌธ ์ค‘ alert == ๊ฒฝ๊ณ ์ฐฝ)

 

 

 

 

 

 

์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ํ›„ ๊ธฐ๋ก์„ ํ™•์ธํ•ด๋ณด๋ฉด, ํ…์ŠคํŠธ ์นธ์ด ๋น„์–ด์žˆ๋‹ค. ์ด๋Š” ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋‹ค์Œ์œผ๋กœ ์ฟ ํ‚ค ๊ฐ’์„ ์•Œ์•„๋‚ด๋Š” ์Šคํฌ๋ฆฝํŠธ ๋ฌธ์„ ์ž…๋ ฅํ•ด์ค€๋‹ค. 

 

 

 

 

submit๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด, ์ฟ ํ‚ค๊ฐ’์ด ์ถœ๋ ฅ๋œ๋‹ค. 

 

 

 

 

์ด ์Šคํฌ๋ฆฝํŠธ๋Š” DB๋‚ด์— ์ €์žฅ์ด ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋‹ค๋ฅธ ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ์ ‘์†ํ•˜๋ฉด

 

๋ฐ”๋กœ ์‚ฌ์šฉ์ž์˜ ์ฟ ํ‚ค๊ฐ’์„ ๊ฒฝ๊ณ ์ฐฝ์œผ๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

 

 

์ ‘์†ํ•  ๋•Œ๋งˆ๋‹ค ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ ์ถœ๋ ฅ

 

 


 

๋Œ€์‘๋ฐฉ์•ˆ

 

๋‚œ์ด๋„ ์ƒ์—์„œ๋Š” ํ…์ŠคํŠธ ์ž…๋ ฅ ๊ณต๊ฐ„์— ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด๋„ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ , ๋ฌธ์ž๋กœ ์ถœ๋ ฅ๋œ๋‹ค.

์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด 'sqli_check_3' ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์šฐํšŒํ•œ๋‹ค.

 

 

 

 

 

 

'sqli_check_3' ํ•จ์ˆ˜๋ฅผ functions_external.php์— ์ •์˜๋˜์–ด์žˆ๊ณ  

์ด ํ•จ์ˆ˜๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด

 

 

 

 

 

mysqli_real_escape_stringํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์šฐํšŒํ•œ๋‹ค.

 

 


 

mysqli_real_escape_string ?

 

PHP์— ์ •์˜๋˜์–ด ์žˆ๊ณ  PHP ๊ธฐ๋ณธ ์ œ๊ณตํ•จ์ˆ˜์ธ mysql_real_escape_string ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์šฐํšŒํ•œ๋‹ค.

์ด ํ•จ์ˆ˜๋Š” ๋งํฌ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ž๋กœ ๋ฐ›์œผ๋ฉฐ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•œ๋‹ค.

 

์‚ฌ์šฉ์ž ์ž…๋ ฅ ๊ฐ’์— SQL ๋ฌธ๋ฒ•์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํŠน์ˆ˜ ๋ฌธ์ž๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ

๋ฐฑ์Šฌ๋ž˜์‹œ๋ฅผ ๋ถ™์—ฌ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ SQL๋ฌธ๋ฒ•์œผ๋กœ ์ธ์‹ํ•˜์ง€ ์•Š๋„๋ก ๋ฐฉ์–ดํ•œ๋‹ค.

์—ฌ๊ธฐ์„œ ์šฐํšŒํ•˜๋Š” ๋ฌธ์ž๋Š” 'NULL, \n, \r, \, ', ", ^Z' ์ด๋ฏ€๋กœ ์ž‘์Œ๋”ฐ์˜ดํ‘œ(')๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ฐฑ์Šฌ๋ž˜์‹œ๊ฐ€ ๋ถ™์–ด SQL์ฟผ๋ฆฌ๋กœ ์ธ์‹ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

์ด ํ•จ์ˆ˜๋Š” sql์ธ์ ์…˜์— ๋Œ€์‘๋ฐฉ์•ˆ์œผ๋กœ๋„ ์“ฐ์ด๋Š”๋ฐ 'htmlspecialchars' ํ•จ์ˆ˜๋กœ ์šฐํšŒํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ํ…์ŠคํŠธ ์ž…๋ ฅ ๊ณต๊ฐ„์œผ๋กœ

sql ์ธ์ ์…˜์„ ์‹œ๋„ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฏ€๋กœ, ์œ„ ํ•จ์ˆ˜๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์šฐํšŒํ•œ ๊ฒƒ์ด๋‹ค.

 

 

htmlspecialchars 

 

์ด ํ•จ์ˆ˜๋Š” PHP์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ณธ ํ•จ์ˆ˜๋กœ, HTML์—์„œ ์‚ฌ์šฉํ•˜๋Š” ํŠน์ˆ˜ ๋ฌธ์ž๋ฅผ UTF-8 ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

UTF-8์€ ์œ ๋‹ˆ์ฝ”๋“œ ํ•œ ๋ฌธ์ž๋ฅผ 1byte๋ถ€ํ„ฐ 4byte๊นŒ์ง€ ์ธ์ฝ”๋”ฉํ•˜๋ฉฐ ์•„์Šคํ‚ค ์ฝ”๋“œ๋„ ํ˜ธํ™˜์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

htmlspecialcharsํ•จ์ˆ˜์—์„œ ๋ณ€ํ™˜ํ•˜๋Š” ํŠน์ˆ˜๋ฌธ์ž๋Š” &,  ",  ',  <,  > ์ž…๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•

'Game > Bee-box' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Bee-box] User-Agent  (0) 2020.09.30
[Bee-box] Change Secret  (0) 2020.09.29
[Bee-box] ์ €์žฅ๋œ XSS ์ทจ์•ฝ์   (0) 2020.09.25
[Bee-box] Session Mgmt. - Session ID in URL  (0) 2020.09.25
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.