ํ•ดํ‚น ์•Œ๋ ค์ค„๊ฒŒ 19ํ™”: SQL Injection ์•ˆ๋…•ํ•˜์„ธ์š”! ์˜ฌํ•ด์˜ ๋งˆ์ง€๋ง‰ ํ•ดํ‚น ์•Œ๋ ค์ค„๊ฒŒ์ž…๋‹ˆ๋‹ค. ๐Ÿ˜ƒ๐ŸŽ„


ํ•ดํ‚น ์•Œ๋ ค์ค„๊ฒŒ
19ํ™”: SQL Injection

์•ˆ๋…•ํ•˜์„ธ์š”! ์˜ฌํ•ด์˜ ๋งˆ์ง€๋ง‰ ํ•ดํ‚น ์•Œ๋ ค์ค„๊ฒŒ์ž…๋‹ˆ๋‹ค. ๐Ÿ˜ƒ๐ŸŽ„
2017๋…„์— ํ•œ ์ˆ™๋ฐ• ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•ดํ‚น๋‹นํ•˜์—ฌ ์•ฝ 4800๋ช…์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ 'ใ…‡ใ…‡ใ…‡๋‹˜, ใ…‡์›” ใ…‡์ผ (์ˆ™๋ฐ•์—…์†Œ๋ช…)์—์„œ ์ฆ๊ฑฐ์šฐ์…จ๋‚˜์š”'๋ผ๋Š” ๋ฌธ์ž๋ฉ”์‹œ์ง€๊ฐ€ ๋ฐœ์†ก๋œ ์‚ฌ๊ฑด์ด ์žˆ์—ˆ์–ด์š”. ๐Ÿ˜ฌ 
ํ•ด๋‹น ํ•ดํ‚น์€ SQL Injection์œผ๋กœ ์ด๋ฃจ์–ด์กŒ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿš“

์›น ์ทจ์•ฝ์ ์„ ๊ณต๋ถ€ํ•  ๋•Œ ํ•ญ์ƒ ๋“ค์–ด๋ณด๋Š” OWASP! OWASP(The Open Web Application Security Project)๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ค‘์—์„œ๋„ ๋นˆ๋„๊ฐ€ ๋†’๊ณ  ๋ณด์•ˆ์ƒ ์˜ํ–ฅ์„ ํฌ๊ฒŒ ์ฃผ๋Š” ์ทจ์•ฝ์  10๊ฐœ๋ฅผ ์„ ์ •ํ•˜์—ฌ OWASP TOP 10์„ ๊ณต๊ฐœํ•ฉ๋‹ˆ๋‹ค. Injection์€ 2013๋…„, 2017๋…„ ๋ชจ๋‘ TOP1์„ ๊ฐ€์ ธ๊ฐ”์ง€๋งŒ 2021๋…„์—๋Š” 3์œ„๋กœ ๋‚ด๋ ค์™”๋„ค์š”.
์ด์ „์— ๋ดค์—ˆ๋˜ Command Injection์€ ;์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋˜ ๋‹ค๋ฅธ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ์–ด์š”. ๊ทธ๋ฆฌ๊ณ  ์ตœ๊ทผ์— Cross Site Scripting๋„ Injection ์นดํ…Œ๊ณ ๋ฆฌ๋กœ ๋“ค์–ด๊ฐ”๋‹ค๊ณ  ํ•˜๋„ค์š”. 
์˜ค๋Š˜์€ SQL Injection ์ค‘์—์„œ๋„ ๊ธฐ๋ณธ ๊ฐœ๋…์„ ์ดํ•ดํ•ด๋ด…์‹œ๋‹ค! ๐Ÿค“ 

SQL Injection์ด ๋ญ์—์š”? ๐Ÿค”
์šฐ์„  SQL์ด๋ž€ Structured Query Language๋กœ ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด '๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์–ธ์–ด'์ž…๋‹ˆ๋‹ค. ๐Ÿ–ฅ๏ธ  SQL ๋ช…๋ น์–ด ์ค‘ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰, ์‚ฝ์ž…, ์‚ญ์ œ๋ฅผ ์š”์ฒญ(์งˆ์˜, ์ฟผ๋ฆฌ)ํ•˜๋ฉด ํ•ด๋‹นํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

SQL Injection์ด๋ž€ ์‚ฌ์šฉ์ž๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” SQL์„ ์‚ฝ์ž…(injection)ํ•˜์—ฌ ์•…์„ฑ ํŽ˜์ด๋กœ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด์ฃ . ์ด ๊ณต๊ฒฉ์œผ๋กœ ๊ธฐ๋ฐ€์„ฑ(Confidentiality), ๋ฌด๊ฒฐ์„ฑ(Integrity), ์ธ์ฆ(Authentication) ๋“ฑ์˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋ฐ€์„ฑ๊ณผ ๋ฌด๊ฒฐ์„ฑ์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ CIA์—์„œ ๋‹ค๋ค˜์—ˆ์–ด์š”. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ๋ฏผ๊ฐํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€, ์ˆ˜์ •, ์‚ญ์ œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ฐ€์„ฑ๊ณผ ๋ฌด๊ฒฐ์„ฑ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์ฃ . ๐Ÿ˜ž
์ธ์ฆ์— ๋Œ€ํ•ด์„œ๋Š” ์‚ฌ์šฉ์ž ID์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒฝ์šฐ์— ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ชจ๋ฅด๋”๋ผ๋„ ํ•ด๋‹น ์‚ฌ์šฉ์ž๋กœ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค! ๐Ÿ˜ฑ ์˜ค๋Š˜์€ ์ธ์ฆ ์šฐํšŒ๋ฅผ ํ•˜๋Š” SQL Injection์„ ์˜ˆ์‹œ๋กœ ์‚ดํŽด๋ณผ๊ฒŒ์š”!

์ž์„ธํ•œ ์˜ˆ์‹œ๋ฅผ ๋“ค์–ด์ฃผ์„ธ์š”!
์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋กœ๊ทธ์ธ์„ ํ•ด์•ผ ํ•˜๋Š”๋ฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ, ํ˜น์€ ๊ด€๋ฆฌ์ž์˜ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•˜๊ณ  ์‹ถ์–ด์กŒ์–ด์š”.
์›ํ•˜๋Š” ์‚ฌ์ดํŠธ๊ฐ€ SQL Injection์— ์ทจ์•ฝํ•˜๋‹ค๊ณ  ํ•  ๋•Œ, ํŠนํžˆ Alice์˜ ๊ณ„์ •์„ ๋ณด๊ณ  ์‹ถ๋„ค์š”. ๐Ÿ˜ˆ 
์–ด๋–ป๊ฒŒ ํ•˜๋ฉด SQL Injection ๊ณต๊ฒฉ์œผ๋กœ Alice์˜ ๊ณ„์ •์— ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?

๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ชจ๋ฅด๋Š” ์ƒํƒœ์—์„œ, Alice๊ฐ€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์„ค๋งˆ password๋ผ๊ณ  ํ•ด๋†“์ง„ ์•Š์•˜๊ฒ ์ฃ ? ํ•œ๋ฒˆ ๋์— '์„ ์ถ”๊ฐ€ํ•ด password'๋ฅผ ์ž…๋ ฅํ•ด๋ณผ๊นŒ์š”?

๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ž…๋ ฅํ•œ Alice์™€ password'๊ฐ€ SQL์— ์‚ฝ์ž…๋˜์–ด ์„œ๋ฒ„์— ์ „์†ก๋˜๊ณ , ์ž…๋ ฅํ•œ ID์™€ PW๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•ด ๋งž๋‹ค๋ฉด ๋กœ๊ทธ์ธ์„ ์„ฑ๊ณตํ•ฉ๋‹ˆ๋‹ค! ๐Ÿ˜€
ํ˜„์žฌ ์ž…๋ ฅํ•œ ID์™€ PW๋Š” ์•„๋ž˜์ฒ˜๋Ÿผ ์ฟผ๋ฆฌ์— ์‚ฝ์ž…๋˜์–ด ์ „์†ก๋˜๋Š” ๊ฑฐ์ฃ .

์ž ๊น.. ๋น„๋ฐ€๋ฒˆํ˜ธ ๋’ค์— ์ถ”๊ฐ€๋กœ ๋ถ™์˜€๋˜ '๊ฐ€ ์ข€ ์œ„ํ—˜ํ•ด ๋ณด์ด์ง€ ์•Š๋‚˜์š”? ๐Ÿ˜ฑ
๐Ÿšง SQL syntax error๊ฐ€ ๋ฐœ์ƒํ–ˆ์–ด์š”. ์ถ”๊ฐ€๋กœ ์ž…๋ ฅํ•œ '๊ฐ€ ๊ธฐ์กด์— ์•ž์— ์žˆ๋˜ '์™€ ์ง์„ ์ด๋ฃจ๊ณ , ๊ธฐ์กด์— ๋’ค์— ์žˆ๋˜ '๋Š” ์ง์„ ์žƒ์–ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋„ค์š”.

์–ด๋–ป๊ฒŒ ํ•˜๋ฉด Alice์˜ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”?๐Ÿค”
PW์— password' or '1'='1์„ ์ž…๋ ฅํ•˜๋ฉด ๊ณผ์—ฐ SQL ์ฟผ๋ฆฌ์— ์–ด๋–ป๊ฒŒ ๋“ค์–ด๊ฐ€๋Š”์ง€ ๋ณผ๊ฒŒ์š”!

๋ด์•ผํ•  ๊ณณ์€ PW = 'password' or '1'='1' ๋ถ€๋ถ„์ด์—์š”. OR ์—ฐ์‚ฐ์„ ์•„์‹œ๋‚˜์š”? 
๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ์ฐธ์ด๋ฉด ์ฐธ์ด๋ผ๊ณ  ํ• ๊ฒŒ~ ๋ผ๋Š” ๋„“์€ ๋งˆ์Œ์˜ ์—ฐ์‚ฐ์ž์ฃ . ํ•ด์„ํ•˜๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” password๊ณ , ์•„๋‹ˆ๋ฉด '1'='1'์ด์•ผ! ๋ผ๋Š” ๋œป์œผ๋กœ ๋ฐ”๋€Œ๊ณ , '1'='1'์€ ์ฐธ์ด๊ธฐ ๋•Œ๋ฌธ์— OR ์—ฐ์‚ฐ์„ ๋งŒ๋‚˜ ๊ฒฐ๊ตญ ์ฐธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด ๋กœ๊ทธ์ธ์„ ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค! ๐Ÿ˜†

๋งŒ์•ฝ ID์— Alice'; -- , PW์— abcde๋ฅผ ์ž…๋ ฅํ•˜๋ฉด SELECT * FROM users WHERE ID = 'Alice';--' AND PW = 'abcde'๊ฐ€ ๋“ค์–ด๊ฐ€๊ณ , SQL ์—์„œ๋Š” double-dash(--)๊ฐ€ ์ฃผ์„์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ ์ดํ›„์˜ ์ฝ”๋“œ๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์•„ SELECT * FROM users WHERE username='Alice'; ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

SQL Injection์€ ์–ด๋–ป๊ฒŒ ๋ง‰์„ ์ˆ˜ ์žˆ๋‚˜์š”?
SQL Injection์„ ๋ง‰๋Š” ๋ฐฉ์‹์€ ์—ฌ๋Ÿฌ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
์šฐ์„  ๋Œ€ํ‘œ์ ์œผ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”๋œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฐฉ์‹์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋จผ์ € ๋ชจ๋“  SQL ์ฝ”๋“œ๋ฅผ ์ •์˜ํ•œ ๋‹ค์Œ ๋‚˜์ค‘์— ๊ฐ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ฟผ๋ฆฌ์— ์ „๋‹ฌํ•˜๋„๋ก ํ•ด์š”. ๋งŒ์•ฝ ์œ„์˜ ์˜ˆ์‹œ์ฒ˜๋Ÿผ ๋น„๋ฐ€๋ฒˆํ˜ธ์— password' or '1'='1 ์„ ์ž…๋ ฅํ•ด๋„ ํ•ด์ปค์˜ ์˜๋„๋Œ€๋กœ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ , ๋ฌธ์ž ๊ทธ๋Œ€๋กœ ๋ฌธ์ž์—ด password' or '1'='1 ์™€ ์ผ์น˜ํ•˜๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด์ฃ . ๐Ÿคจ
๊ทธ๋ฆฌ๊ณ  ๋‹จ์ˆœํžˆ ๋ช‡ ๊ฐœ์˜ ์ฐจ๋‹จ ๋ชฉ๋ก์„ ๋งŒ๋“œ๋Š” ๊ฒƒ๋ณด๋‹ค ํ—ˆ์šฉ ๋ชฉ๋ก์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์•„์š”. ์˜ˆ๋ฅผ ๋“ค์–ด OR๋ฅผ ์ฐจ๋‹จํ•˜๋ฉด || ์„ ์‚ฌ์šฉํ•˜๋Š” ๋“ฑ์˜ ์ฐจ๋‹จ ๋ชฉ๋ก์„ ๋„ˆ๋ฌด ์•ฝํ•˜๋ฉด ์†์‰ฝ๊ฒŒ ์šฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜์ฃ . ์ •๊ทœ ํ‘œํ˜„์‹์œผ๋กœ ํ—ˆ์šฉ๋œ ํŒจํ„ด๋“ค๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ORM(Object-Relational Mapping)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ํ•œ ๋ฐฉ๋ฒ•์ด์—์š”. ORM ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•„ํ„ฐ๋งํ•˜๋ฏ€๋กœ SQL Injection์œผ๋กœ๋ถ€ํ„ฐ ๋ณดํ˜ธํ•ฉ๋‹ˆ๋‹ค. 
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ ๊ณ„์ •์„ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋ง๊ณ  ์ œํ•œ๋œ ๊ธฐ๋Šฅ๋งŒ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณ„์ •์„ ํ™•์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ๋„ ๋ณด์กฐ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒ ๋„ค์š”. 

๋‚ด๋…„์— ๋” ์œ ์ตํ•œ ํ•ดํ‚น ์•Œ๋ ค์ค„๊ฒŒ๋กœ ์ฐพ์•„์˜ฌ๊ฒŒ์š”! ์›ํ•˜๋Š” ์ฃผ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“ ์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”! ๐Ÿ˜ƒ

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