Skip to content

Latest commit

ย 

History

History
122 lines (98 loc) ยท 10.4 KB

SQL-injection.md

File metadata and controls

122 lines (98 loc) ยท 10.4 KB

SQL Injection

1. SQL injection ์ด๋ž€??

SQL injection ์ด๋ž€ ์•…์˜์ ์ธ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด์•ˆ์ƒ์˜ ์ทจ์•ฝ์ ์„ ์ด์šฉํ•˜์—ฌ, ์ž„์˜์˜ SQL๋ฌธ์„ ์ฃผ์ž…ํ•˜๊ณ  ์‹คํ–‰๋˜๊ธฐ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋น„์ •์ƒ์ ์ธ ๋™์ž‘์„ ํ•˜๋„๋ก ์กฐ์ž‘ํ•˜๋Š” ํ–‰์œ„๋ฅผ ๋งํ•œ๋‹ค. ์ธ์ ์…˜ ๊ณต๊ฒฉ์€ OWSAP Top10 ์ค‘ ์ฒซ๋ฒˆ์งธ์— ์†ํ•ด ์žˆ์œผ๋ฉฐ, ๊ณต๊ฒฉ์ด ๋น„๊ต์  ์‰ฌ์šด ํŽธ์ด๊ณ  ๊ณต๊ฒฉ์— ์„ฑ๊ณตํ•  ๊ฒฝ์šฐ ํฐ ํ”ผํ•ด๋ฅผ ์ž…ํž ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฒฉ์ด๋‹ค.

OWASP

  • OWASP TOP 10์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ทจ์•ฝ์  ์ค‘์—์„œ ๋นˆ๋„๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•˜๊ณ , ๋ณด์•ˆ์ƒ ์˜ํ–ฅ์„ ํฌ๊ฒŒ ์ค„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค 10๊ฐ€์ง€๋ฅผ ์„ ์ •ํ•œ ๋ฌธ์„œ์ด๋‹ค.

injection์˜ ์‹ค ์˜ˆ์‹œ๋กœ 2017๋…„ 3์›”์— ์ผ์–ด๋‚œ '์—ฌ๊ธฐ์–ด๋•Œ'์˜ ๋Œ€๊ทœ๋ชจ ๊ฐœ์ธ์ •๋ณด ์œ ์ถœ ์‚ฌ๊ฑด์ด ์žˆ๋‹ค.


2. SQL injection ๊ณต๊ฒฉ ์ข…๋ฅ˜ ๋ฐ ๋ฐฉ๋ฒ•

  1. ๋…ผ๋ฆฌ์  ์—๋Ÿฌ๋ฅผ ์ด์šฉํ•œ SQL injection(Error based SQL injection)
    • ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๊ณ , ๋Œ€์ค‘์ ์ธ ๊ณต๊ฒฉ ๊ธฐ๋ฒ•.
    • ์‚ฌ์ง„์—์„œ ๋ณด์ด๋Š” ์ฟผ๋ฆฌ๋ฌธ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋กœ๊ทธ์ธ ์‹œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” SQL ๊ตฌ๋ฌธ.
    • ํ•ด๋‹น ๊ตฌ๋ฌธ์—์„œ ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•œ ๊ฒ€์ฆ์ด ์—†์Œ์„ ํ™•์ธํ•˜๊ณ , ์•…์˜์ ์ธ ์‚ฌ์šฉ์ž๊ฐ€ ์ž„์˜์˜ SQL ๊ตฌ๋ฌธ์„ ์ฃผ์ž…ํ•˜์˜€๋‹ค.
    • ์ฃผ์ž…๋œ ๋‚ด์šฉ์€ 'OR=1 --'๋กœ WHERE ์ ˆ์— ์žˆ๋Š” ์‹ฑ๊ธ€์ฟผํ„ฐ๋ฅผ ๋‹ซ์•„์ฃผ๊ธฐ ์œ„ํ•œ ์‹ฑ๊ธ€์ฟผํ„ฐ์™€ OR 1=1 ๋ผ๋Š” ๊ตฌ๋ฌธ์„ ์ด์šฉํ•ด WHERE ์ ˆ์„ ๋ชจ๋‘ ์ฐธ์œผ๋กœ ๋งŒ๋“ค๊ณ 
    • --๋ฅผ ๋„ฃ์–ด ์คŒ์œผ๋กœ ๋’ค์˜ ๊ตฌ๋ฌธ์„ ๋ชจ๋‘ ์ฃผ์„ ์ฒ˜๋ฆฌ ํ•ด์ฃผ์—ˆ๋‹ค.
    • ๋งค์šฐ ๊ฐ„๋‹จํ•œ ๊ตฌ๋ฌธ์ด์ง€๋งŒ, ๊ฒฐ๋ก ์ ์œผ๋กœ Users ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ชจ๋“  ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๊ฒŒ ๋จ์œผ๋กœ์จ ๊ฐ€์žฅ ๋จผ์ € ๋งŒ๋“ค์–ด์ง„ ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ์— ์„ฑ๊ณตํ•˜๊ฒŒ ๋œ๋‹ค.
    • ๋ณดํ†ต์€ ๊ด€๋ฆฌ์ž ๊ณ„์ •์„ ๋งจ ์ฒ˜์Œ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ๊ด€๋ฆฌ์ž ๊ฒŒ์ •์— ๋กœ๊ทธ์ธํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
    • ๊ด€๋ฆฌ์ž ๊ณ„์ •์„ ํƒˆ์ทจํ•œ ์•…์˜์ ์ธ ์‚ฌ์šฉ์ž๋Š” ๊ด€๋ฆฌ์ž์˜ ๊ถŒํ•œ์„ ์ด์šฉํ•ด ๋˜ ๋‹ค๋ฅธ 2์ฐจํ”ผํ•ด๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. แ„‚แ…ฉแ†ซแ„…แ…ตแ„Œแ…ฅแ†จ SQL injection



  1. ์œ ๋‹ˆ์–ธ ๋ช…๋ น์–ด๋ฅผ ์ด์šฉํ•œ SQL injection(Union based SQl injection)
    • SQL์—์„œ Union ํ‚ค์›Œ๋“œ๋Š” ๋‘ ๊ฐœ์˜ ์ฟผ๋ฆฌ๋ฌธ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ฉํ•ด์„œ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”๋กœ ๋ณด์—ฌ์ฃผ๊ฒŒ ํ•˜๋Š” ํ‚ค์›Œ๋“œ
    • ์ •์ƒ์ ์ธ ์ฟผ๋ฆฌ๋ฌธ์— Union ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ ์…˜์— ์„ฑ๊ณตํ•˜๋ฉด ์›ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฌธ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋จ
    • ์œ ๋‹ˆ์–ธ ์ธ์ ์…˜์„ ์„ฑ๊ณตํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘ ๊ฐ€์ง€์˜ ์กฐ๊ฑด์ด ์žˆ๋‹ค. (1. Unionํ•˜๋Š” ๋‘ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ ์ˆ˜๊ฐ€ ๊ฐ™์•„์•ผํ•˜๊ณ , 2. ๋ฐ์ดํ„ฐ์˜ ํ˜•ํƒœ๊ฐ€ ๊ฐ™์•„์•ผํ•œ๋‹ค.)
    • ์‚ฌ์ง„์—์„œ ๋ณด์ด๋Š” ์ฟผ๋ฆฌ๋ฌธ์€ Board๋ผ๋Š” ํ…Œ์ด๋ธ”์—์„œ ๊ฒŒ์‹œ๊ธ€์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฌธ์ด๋‹ค.
    • ์ž…๋ ฅ๊ฐ’์„ title๊ณผ contents ์ปฌ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ๋ž‘ ๋น„๊ตํ•œ ๋’ค ๋น„์Šทํ•œ ๊ธ€์ž๊ฐ€ ์žˆ๋Š” ๊ฒŒ์‹œ๊ธ€์„ ์ถœ๋ ฅํ•œ๋‹ค.
    • ์—ฌ๊ธฐ์„œ ์ž…๋ ฅ๊ฐ’์œผ๋กœ Union ํ‚ค์›Œ๋“œ์™€ ํ•จ๊ป˜ ์ปฌ๋Ÿผ ์ˆ˜๋ฅผ ๋งž์ถฐ์„œ SELECT ๊ตฌ๋ฌธ์„ ๋„ฃ์–ด์ฃผ๊ฒŒ ๋˜๋ฉด ๋‘ ์ฟผ๋ฆฌ๋ฌธ์ด ํ•ฉ์ณ์ ธ์„œ ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”๋กœ ๋ณด์—ฌ์ง€๊ฒŒ ๋œ๋‹ค.
    • ํ˜„์žฌ ์ธ์ ์…˜ ํ•œ ๊ตฌ๋ฌธ์€ ์‚ฌ์šฉ์ž์˜ id์™€ password๋ฅผ ์š”์ฒญํ•˜๋Š” ์ฟผ๋ฆฌ๋ฌธ์ด๋‹ค.
    • ์ธ์ ์…˜์ด ์„ฑ๊ณตํ•˜๊ฒŒ ๋˜๋ฉด, ์‚ฌ์šฉ์ž์˜ ๊ฐœ์ธ์ •๋ณด๊ฐ€ ๊ฒŒ์‹œ๊ธ€๊ณผ ํ•จ๊ป˜ ํ™”๋ฉด์— ๋ณด์—ฌ์ง€๊ฒŒ ๋œ๋‹ค. แ„‹แ…ฒแ„‚แ…ตแ„‹แ…ฅแ†ซ SQL injection



  1. ๋ธ”๋ผ์ธ๋“œ SQL injection - based Boolean
    • Blind SQL injection์€ DB๋กœ๋ถ€ํ„ฐ ํŠน์ •ํ•œ ๊ฐ’์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌ๋ฐ›์ง€ ์•Š๊ณ , ๋‹จ์ˆœํžˆ ์ฐธ๊ณผ ๊ฑฐ์ง“์˜ ์ •๋ณด๋งŒ ์•Œ ์ˆ˜ ์žˆ์„๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
    • ๋กœ๊ทธ์ธ ํผ์— SQL injection์ด ๊ฐ€๋Šฅํ•˜๋‹ค๊ณ  ๊ฐ€์ • ํ–ˆ์„๋•Œ, ์„œ๋ฒ„๊ฐ€ ์‘๋‹ตํ•˜๋Š” ๋กœ๊ทธ์ธ ์„ฑ๊ณต๊ณผ ๋กœ๊ทธ์ธ ์‹คํŒจ ๋ฉ”์‹œ์ง€๋ฅผ ์ด์šฉํ•˜์—ฌ
    • DB์˜ ํ…Œ์ด๋ธ” ์ •๋ณด ๋“ฑ์„ ์ถ”์ถœํ•ด ๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
    • ์ด๋ฏธ์ง€๋Š” Blind injection์„ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ” ๋ช…์„ ์•Œ์•„๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
    • MySQL ์ธ์ ์…˜์ด ๊ฐ€๋Šฅํ•œ ๋กœ๊ทธ์ธ ํผ์„ ํ†ตํ•˜์—ฌ ์•…์˜์ ์ธ ์‚ฌ์šฉ์ž๋Š” ์ž„์˜๋กœ ๊ฐ€์ž…ํ•œ abc123 ์ด๋ผ๋Š” ์•„์ด๋””์™€ ํ•จ๊ป˜ abc123' and ASCI ~~~ ๊ตฌ๋ฌธ์„ ์ฃผ์ž…ํ•œ๋‹ค.
    • ํ•ด๋‹น ๊ตฌ๋ฌธ์€ MySQL์—์„œ ํ…Œ์ด๋ธ” ๋ช…์„ ์กฐํšŒํ•˜๋Š” ๊ตฌ๋ฌธ์œผ๋กœ limit ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”๋งŒ ์กฐํšŒํ•˜๊ณ , SUBSTR ํ•จ์ˆ˜๋กœ ์ฒซ ๊ธ€์ž๋งŒ, ๋งˆ์ง€๋ง‰์œผ๋กœ ASCII๋ฅผ ํ†ตํ•ด ascii ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ค€๋‹ค.
    • ๋งŒ์•ฝ์— ์กฐํšŒ๋˜๋Š” ํ…Œ์ด๋ธ” ๋ช…์ด Users๋ผ๋ฉด 'U'์ž๊ฐ€ ascii ๊ฐ’์œผ๋กœ ์กฐํšŒ๊ฐ€ ๋  ๊ฒƒ์ด๊ณ , ๋’ค์˜ 100์ด๋ผ๋Š” ์ˆซ์ž ๊ฐ’๊ณผ ๋น„๊ต๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค.
    • ๊ฑฐ์ง“์ด๋ฉด ๋กœ๊ทธ์ธ ์‹คํŒจ๊ฐ€ ๋  ๊ฒƒ์ด๊ณ , ์ฐธ์ด ๋  ๋•Œ๊นŒ์ง€ ๋’ค์˜ 100์ด๋ผ๋Š” ์ˆซ์ž๋ฅผ ๋ณ€๊ฒฝํ•ด ๊ฐ€๋ฉด์„œ ๋น„๊ต๋ฅผ ํ•˜๋ฉด ๋œ๋‹ค.
    • ๊ณต๊ฒฉ์ž๋Š” ์ด ํฌ๋ฅด์„ธ์Šค๋ฅผ ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•˜์—ฌ ๋‹จ๊ธฐ๊ฐ„ ๋‚ด์— ํ…Œ์ด๋ธ” ๋ช…์„ ์•Œ์•„ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค. Boolean based injection



  1. ๋ธ”๋ผ์ธ๋“œ SQL injection - based Time
    • Time Based SQL injection๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ํŠน์ •ํ•œ ์‘๋‹ต ๋Œ€์‹ ์— ์ฐธ ํ˜น์€ ๊ฑฐ์ง“์˜ ์‘๋‹ต์„ ํ†ตํ•ด์„œ DB์˜ ์ •๋ณด๋ฅผ ์œ ์ถ”ํ•˜๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.
    • ์‚ฌ์šฉ๋˜๋Š” ํ•จ์ˆ˜๋Š” MySQL ๊ธฐ์ค€์œผ๋กœ SLEEP๊ณผ BENCHMARK์ด๋‹ค.
    • ์ด๋ฏธ์ง€๋Š” Time based SQL injection์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธธ์ด๋ฅผ ์•Œ์•„๋‚ด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.
    • ๋กœ๊ทธ์ธ ํผ์— ์ฃผ์ž…์ด ๋˜์—ˆ์œผ๋ฉฐ ์ž„์˜๋กœ abc123์ด๋ผ๋Š” ๊ณ„์ •์„ ์ƒ์„ฑํ•ด ๋‘”๋‹ค.
    • ์•…์˜์ ์ธ ์‚ฌ์šฉ์ž๊ฐ€ abc123' OR ~~~ ๊ตฌ๋ฌธ์„ ์ฃผ์ž…ํ•œ๋‹ค.
    • ์—ฌ๊ธฐ์„œ LENGTH ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , DATABASE ํ•จ์ˆ˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด๋ฆ„์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • ์œ„์˜ ๊ทธ๋ฆผ์€ Time based SQL injection์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    • ์ฃผ์ž…๋œ ๊ตฌ๋ฌธ์—์„œ, LENGTH(DATABASE()) = 1๊ฐ€ ์ฐธ์ด๋ฉด SLEEP(2)๊ฐ€ ๋™์ž‘ํ•˜๊ณ , ๊ฑฐ์ง“์ด๋ฉด ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • ์ด๋ฅผ ํ†ตํ•ด ์ˆซ์ž 1๋ถ€๋ถ„์„ ์กฐ์ž‘ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ธธ์ด๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
    • ๋งŒ์•ฝ์— SLEEP์ด๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ์น˜ํ™˜์ฒ˜๋ฆฌ ๋˜์–ด์žˆ๋‹ค๋ฉด, ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ BENCHMARK๋‚˜ WAIT ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. time based injection



  1. ์ €์žฅ๋œ ํ”„๋กœ์‹œ์ €์—์„œ์˜ SQL injection(Stored Procedure SQL injection)

    • ์ €์žฅ ํ”„๋กœ์‹œ์ €๋Š” ์ผ๋ จ์˜ ์ฟผ๋ฆฌ๋“ค์„ ๋ชจ์•„ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž„.
    • ๊ณต๊ฒฉ์— ์‚ฌ์šฉ๋˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์ €์žฅ ํ”„๋กœ์‹œ์ €๋Š” MS-SQL์— ์žˆ๋Š” xp_cmdshell๋กœ ์œˆ๋„์šฐ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
    • ๋‹จ, ๊ณต๊ฒฉ์ž๊ฐ€ ์‹œ์Šคํ…œ ๊ถŒํ•œ์„ ํš๋“ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๊ณต๊ฒฉ ๋‚œ์ด๋„๊ฐ€ ๋†’์œผ๋‚˜ ๊ณต๊ฒฉ์— ์„ฑ๊ณตํ•œ๋‹ค๋ฉด
    • ์„œ๋ฒ„์— ์ง์ ‘์ ์ธ ํ”ผํ•ด๋ฅผ ์ž…ํž ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฒฉ์ด๋‹ค.

  2. ๋‹ค๋Ÿ‰์˜ SQL injection(Mass SQL injection)

    • 2008๋…„์— ์ฒ˜์Œ ๋ฐœ๊ฒฌ๋œ ๊ณต๊ฒฉ๊ธฐ๋ฒ•์œผ๋กœ ๊ธฐ์กด SQL injection๊ณผ ๋‹ฌ๋ฆฌ ํ•œ๋ฒˆ์˜ ๊ณต๊ฒฉ์œผ๋กœ ๋‹ค๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์กฐ์ž‘๋˜์–ด ํฐ ํ”ผํ•ด๋ฅผ ์ž…ํžˆ๋Š” ๊ฒƒ์„ ์˜๋ฏธ
    • ๋ณดํ†ต MS-SQL์„ ์‚ฌ์šฉํ•˜๋Š” ASP ๊ธฐ๋ฐ˜ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋ฉฐ
    • ์ฟผ๋ฆฌ๋ฌธ์€ HEX ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์œผ๋กœ ์ธ์ฝ”๋”ฉํ•˜์—ฌ ๊ณต๊ฒฉํ•œ๋‹ค.
    • ๋ณดํ†ต ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ’์„ ๋ณ€์กฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์•…์„ฑ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ 
    • ์‚ฌ์šฉ์ž๋“ค์ด ๋ณ€์กฐ๋œ ์‚ฌ์ดํŠธ์— ์ ‘์† ์‹œ ์ข€๋น„PC๋กœ ๊ฐ์—ผ๋˜๊ฒŒ ํ•œ๋‹ค.
    • ์ด๋ ‡๊ฒŒ ๊ฐ์—ผ๋œ ์ข€๋น„PC๋“ค์€ DDoS ๊ณต๊ฒฉ์— ์‚ฌ์šฉ๋œ๋‹ค.

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

1) ์ž…๋ ฅ ๊ฐ’์— ๋Œ€ํ•œ ๊ฒ€์ฆ

์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์ด DB Query์— ๋™์ ์œผ๋กœ ์˜ํ–ฅ์„ ์ฃผ๋Š” ๊ฒฝ์šฐ, ์ž…๋ ฅ๋œ ๊ฐ’์ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜๋„ํ•œ ๊ฐ’(์œ ํšจ๊ฐ’)์ธ์ง€ ๊ฒ€์ฆํ•œ๋‹ค.
- ID, PASSWORD, ๊ฒŒ์‹œํŒ ์ œ๋ชฉ, ๋ณธ๋ฌธ, ๊ฒ€์ƒ‰์ฐฝ, ์ฃผ์†Œ์ฐฝ ๋“ฑ์˜ ๋ชจ๋“  ์ž…๋ ฅ๋ž€์— ํŠน์ˆ˜๋ฌธ์ž(๋“ฑํ˜ธ, ๋ถ€๋“ฑํ˜ธ, ์ธ์šฉ ๋ถ€ํ˜ธ๋“ฑ)๋ฅผ ์ž…๋ ฅํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์†Œ์Šค์ฝ”๋“œ ์ˆ˜์ •
- ์ž…๋ ฅ ๊ฐ’์— ์ •์˜๋œ ๋ฌธ์ž ๊ธธ์ด๋ฅผ ๊ฒ€์ฆํ•˜์—ฌ SQL ๋ฌธ์ด ์ถ”๊ฐ€ ์‚ฝ์ž…๋˜์ง€ ์•Š๋„๋ก ์˜ˆ์™ธ์ฒ˜๋ฆฌ
- ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ˆซ์ž์ธ ๊ฒฝ์šฐ isnumeric๊ณผ ๊ฐ™์€ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฒ€์ฆํ•˜๋ฉฐ, ๋ฌธ์ž์ธ ๊ฒฝ์šฐ ์ •๊ทœํ‘œํ˜„์‹์„ ์ด์šฉํ•˜์—ฌ ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ์น˜ํ™˜(ํŠนํžˆ SQL๋ฌธ์—์„œ ํ™œ์šฉ๋˜๋Š” ๋ฌธ์ž(',",--,or ๋“ฑ)๋Š” ๋ฐ˜๋“œ์‹œ    

2) Prepared Statement ๊ตฌ๋ฌธ ์‚ฌ์šฉ

- Prepared Statement ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด
- ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ๊ฐ’์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— DBMS๊ฐ€ ๋ฏธ๋ฆฌ ์ปดํŒŒ์ผ ํ•˜์—ฌ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋Œ€๊ธฐํ•œ๋‹ค.
- ๊ทธ ํ›„ ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ์ธ์‹ํ•˜๊ฒŒ ํ•˜์—ฌ ๊ณต๊ฒฉ ์ฟผ๋ฆฌ๊ฐ€ ๋“ค์–ด๊ฐ„๋‹ค๊ณ  ํ•˜๋”๋ผ๋„
- ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์€ ์ด๋ฏธ ์˜๋ฏธ ์—†๋Š” ๋‹จ์ˆœ ๋ฌธ์ž์—ด์ด๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ์ฟผ๋ฆฌ๋ฌธ๋„ ๊ณต๊ฒฉ์ž์˜ ์˜๋„๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค.

3) Error Message ๋…ธ์ถœ ๊ธˆ์ง€

- ๊ณต๊ฒฉ์ž๊ฐ€ SQL injection์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •๋ณด(ํ…Œ์ด๋ธ”๋ช…, ์ปฌ๋Ÿผ๋ช… ๋“ฑ)๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ๋”ฐ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ์ง€ ์•Š์•˜๋‹ค๋ฉด, ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ์ฟผ๋ฆฌ๋ฌธ๊ณผ ํ•จ๊ป˜ ์—๋Ÿฌ์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ๋ฐ˜ํ™˜ํ•ด ์ค€๋‹ค.
- ์—ฌ๊ธฐ์„œ ํ…Œ์ด๋ธ”๋ช… ๋ฐ ์ปฌ๋Ÿผ๋ช… ๊ทธ๋ฆฌ๊ณ  ์ฟผ๋ฆฌ๋ฌธ์ด ๋…ธ์ถœ์ด ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—
- ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์˜ค๋ฅ˜๋ฐœ์ƒ์‹œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” ํŽ˜์ด์ง€๋ฅผ ์ œ์ž‘ํ•ด์•ผํ•จ.

4) ์›น ๋ฐฉํ™”๋ฒฝ ์‚ฌ์šฉ

- ์›น ๊ณต๊ฒฉ ๋ฐฉ์–ด์— ํŠนํ™”๋˜์–ด์žˆ๋Š” ์›น ๋ฐฉํ™”๋ฒฝ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•์ด๋‹ค.
- ์›น ๋ฐฉํ™”๋ฒฝ์€ ์†Œํ”„ํŠธ์›จ์–ดํ˜•, ํ•˜๋“œ์›จ์–ดํ˜•, ํ”„๋ก์‹œํ˜• ์ด๋ ‡๊ฒŒ ์„ธ๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.
- ์†Œํ”„ํŠธ์›จ์–ดํ˜•์€ ์„œ๋ฒ„ ๋‚ด์— ์ง์ ‘ ์„ค์น˜ํ•˜๋Š” ๋ฐฉ๋ฐฅ์ด๋‹ค.
- ํ•˜๋“œ์›จ์–ดํ˜•์€ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์„œ๋ฒ„ ์•ž ๋‹จ์— ์ง์ ‘ ํ•˜๋“œ์›จ์–ด ์žฅ๋น„๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
- ํ”„๋ก์‹œ ํ˜•์€ DNS ์„œ๋ฒ„ ์ฃผ์†Œ๋ฅผ ์›น ๋ฐฉํ™”๋ฒฝ์œผ๋กœ ๋ฐ”๊พธ๊ณ  ์„œ๋ฒ„๋กœ ๊ฐ€๋Š” ํŠธ๋ž˜ํ”ฝ์ด ์›น ๋ฐฉํ™”๋ฒฝ์„ ๋จผ์ € ๊ฑฐ์น˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.




Reference