English
¢¸¢· µÚ·Î
Ãë¾àÁ¡ID 21835
À§Çèµµ 40
Æ÷Æ® 80, ...
ÇÁ·ÎÅäÄÝ TCP
ºÐ·ù CGI
»ó¼¼¼³¸í ÇØ´ç À¥ ¼­¹ö¿¡´Â Blind SQL ÁÖÀÔ(injection) Ãë¾àÁ¡¿¡ Ãë¾àÇÑ À¥ ÆäÀÌÁö°¡ Á¸ÀçÇÑ´Ù. SQL(Structured Query Language)Àº µ¥ÀÌÅͺ£À̽ºµé¿¡ ÁúÀǸ¦ º¸³»±â À§ÇÑ Æ¯º°ÇÑ ÇüÅÂÀÇ ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÌ´Ù. ´ëºÎºÐÀÇ ¼Ò±Ô¸ð ¹× ´ë±Ô¸ð µ¥ÀÌÅͺ£À̽º ¾îÇø®ÄÉÀ̼ǵéÀº SQL ¹®ÀåµéÀ» ÀÌ¿ëÇÏ¿© ¾×¼¼½ºµÉ ¼ö ÀÖ´Ù. SQL ÁÖÀÔÀº »ç¿ëÀÚ°¡ Á¦°øÇÑ ÀÔ·ÂÀ¸·ÎºÎÅÍ SQL ¹®ÀåµéÀ» ±¸ÃàÇÑ À¥ »çÀÌÆ®µéÀ» µµ¿ëÇÏ´Â µ¥ »ç¿ëµÇ´Â °ø°Ý ±â¹ýÀÌ´Ù. Ãë¾àÇÑ À¥ ½ºÅ©¸³Æ® ÆäÀÌÁö´Â SQL ÁúÀÇ·Î »ç¿ëÇϱâ Àü¿¡ ¿µÇâÀ» ¹Þ´Â Àμö·Î Àü´ÞµÈ »ç¿ëÀÚ°¡ Á¦°øÇÑ ÀÔ·ÂÀ» ÀûÀýÇÏ°Ô °É·¯ ³»Áö ¸øÇÏ´Â ¾îÇø®ÄÉÀÌ¼Ç »óÀÇ °áÇÔÀ¸·Î ÀÎÇÏ¿©, ¿ø°ÝÁöÀÇ °ø°ÝÀÚ°¡ ÀÓÀÇÀÇ SQL ¹®ÀåµéÀ» ÁÖÀÔÇÏ°í ½ÇÇàÇÒ ¼ö ÀÖ°Ô ÇØ ÁØ´Ù. ÀÌ °ø°ÝÀÇ ¿µÇâ·ÂÀº ¿ø°ÝÁöÀÇ °ø°ÝÀÚ°¡ µ¥ÀÌÅͺ£À̽ºÀÇ ¿ÏÀüÇÑ Á¦¾î±ÇÀ» ¾ò¾î³»°Å³ª ½ÉÁö¾î ½Ã½ºÅÛ »ó¿¡ ¸í·ÉµéÀ» ¼öÇàÇÒ ¼ö ÀÖ°Ô ÇØ ÁÙ ¼ö ÀÖ´Ù.
SQL ÁÖÀÔÀÇ ³Î¸® ¾Ë·ÁÁø ¹æ¹ýµé·Î´Â µÎ °¡Áö°¡ ÀÖ´Ù: ÀÏ¹Ý SQL ÁÖÀÔ°ú Blind(º¸ÀÌÁö ¾Ê´Â) SQL ÁÖÀÔÀÌ ±×°ÍÀÌ´Ù. ù¹ø °´Â ÀÀ´äÀ¸·Î ¹ÝȯµÇ´Â ¿¡·¯ ¸Þ½ÃÁöµé¿¡ Æ÷ÇÔµÈ Á¤º¸¸¦ ÀÌ¿ëÇÏ¿© °ø°ÝÀÚ´Â ÀÚ½ÅÀÇ ÁúÀÇ°¡ °³¹ßÀÚÀÇ ÁúÀÇ¿Í ¾î¿ï·Á µ¹¾Æ°¡´Â ÇüŸ¦ °®Ãß´Â SQL ÁÖÀÔ ¹æ¹ýÀÌ´Ù. Blind SQL ÁÖÀÔ¿¡¼­´Â, ¼­¹ö°¡ µ¥ÀÌÅͺ£À̽º ¿¡·¯¸¦ ¹ÝȯÇÏÁö ¾Ê°í À߸øÀ» ÀÏÀ¸Å² »ç¿ëÀÚ¿¡°Ô »ç¿ëÀÚ°¡ ¾Ë¾Æº¸±â ½¬¿î ÇüÅÂÀÇ ¿¡·¯ ÆäÀÌÁö¸¦ ¹ÝȯÇÑ´Ù. ÀÌ·¯ÇÑ »óȲ¿¡¼­´Â SQL ÁÖÀÔÀº ¿©ÀüÈ÷ °¡´ÉÇÏÁö¸¸ ¹ß°ßÇϱâ´Â ½±Áö ¾Ê´Ù. Blind SQL ÁÖÀÔÀ» ŽÁöÇس»´Â ÀϹÝÀûÀÎ ¹æ¹ýÀº Âü°ú °ÅÁþ ¹®ÀåÀ» Àμö °ª¿¡ Áý¾î³Ö´Â °ÍÀÌ´Ù.
´ë°³ÀÇ °ü¸®¿ëÀÇ ¾ÈÀüÀåÄ¡´Â µ¥ÀÌÅͺ£À̽º ¼­¹ö ¿¡·¯ ¸Þ½ÃÁöµéÀÌ º¸¿©ÁöÁö ¾Êµµ·Ï ´Ü¼øÈ÷ Â÷´Ü¸¸ ÇÑ´Ù. À¯°¨½º·´°Ôµµ ÀÌ°Í ¸¸À¸·Î´Â ÃæºÐÇÏÁö ¾Ê´Ù. ¾îÇø®ÄÉÀ̼ÇÀÌ ¿¡·¯ ¸Þ½ÃÁöµéÀ» ¹ÝȯÇÏÁö ¾Ê´õ¶óµµ ¿©ÀüÈ÷ "blind" (º¸ÀÌÁö ¾Ê´Â) SQL ÁÖÀÔ °ø°Ýµé¿¡ Ãë¾àÇÒ ¼ö ÀÖ´Ù.

* Âü°í »çÀÌÆ®:
http://www.webappsec.org/projects/threat/classes/sql_injection.shtml
http://www.securiteam.com/securityreviews/5DP0N1P76E.html
http://www.net-security.org/dl/articles/IntegrigyIntrotoSQLInjectionAttacks.pdf


* ¿µÇâÀ» ¹Þ´Â Ç÷§Æû:
¸ðµç HTTP ¼­¹ö ¸ðµç ¹öÀü
¸ðµç ¿î¿µÃ¼Á¦ ¸ðµç ¹öÀü
ÇØ°áÃ¥ SQL ÁÖÀÔ¿¡ ´ëóÇÏ´Â °¡Àå °£´ÜÇÑ ¹æ¾î ¹æ¹ýÀº SQL ÁúÀǵéÀ» ±¸ÃàÇÔ¿¡ ÀÖ¾î Á÷Á¢ÀûÀ¸·Î CGI º¯¼öµéÀ» »ç¿ëÇؼ­´Â ¾È µÈ´Ù´Â °ÍÀÌ´Ù. ¸ðµç Ŭ¶óÀ̾ðÆ® Á¦°ø µ¥ÀÌÅÍ´Â ¾ÇÀÇÀûÀ¸·Î »ç¿ëµÉ °¡´É¼ºÀÌ ÀÖ´Â ¸ðµç ¹®ÀÚµéÀ̳ª ¹®ÀÚ¿­¿¡ ´ëÇÑ ¼¼Ã´°úÁ¤À» ÇÊ¿ä·Î ÇÑ´Ù. ÀÌ´Â SQL ÁúÀǵéÀ» »ç¿ëÇÏ´Â ¾îÇø®ÄÉÀÌ¼Çµé »Ó¸¸ ¾Æ´Ï¶ó ¸ðµç ¾îÇø®ÄÉÀ̼ǵ鿡 ´ëÇØ ÇàÇØÁ®¾ß ÇÑ´Ù.

- ¿øÇÏ´Â ÇüÅÂÀÇ ¹®Àڵ鸸 Æ÷ÇÔÇϵµ·Ï ¸¸µé¾î¾ß ÇÑ´Ù. ÀÔ·ÂÀÌ ¹®ÀÚ¿­ÀÎÁö ¼ýÀÚÀÎÁö¿¡ µû¶ó¼­ ´Ù¸¥ ¹æ¹ýµéÀÌ Àû¿ëµÉ ¼ö ÀÖ´Ù. ¿¹¸¦ µé¾î, ¹®ÀÚ¿­¿¡ ´ëÇؼ­´Â, ´ÜÀÏ ÀοëºÎÈ£, ÀÌÁß ÀοëºÎÈ£, ½½·¡½¬, ¹é ½½·¡½¬ ±×¸®°í ¼¼¹ÌÄݷаú °°Àº ¹®ÀÚ, ±×¸®°í NULL, ij¸®Áö ¸®ÅÏ(carry return), ´º ¶óÀÎ(new line), µî°ú °°Àº È®ÀåµÈ ¹®ÀÚ´Â ÇÊÅ͸µÇÒ ¼ö ÀÖ´Ù. ASP ½ºÅ©¸³Æ®¿¡¼­´Â replace() ÇÔ¼ö°¡ ´ÙÀ½°ú °°ÀÌ ¹®ÀÚ¿­µé¿¡ ´ëÇØ »ç¿ëµÉ ¼ö ÀÖ´Ù:

Replace(Request.Querystring("foobar"), "'", "")

- ¼ýÀÚ °ª¿¡ ´ëÇؼ­´Â, ÀÔ·ÂÀ» SQL ¹®À¸·Î Çؼ®Çϱâ Àü¿¡ Á¤¼ö·Î º¯È¯ÇÑ´Ù. ½Ç·Ê·Î ASP ½ºÅ©¸³Æ®¿¡¼­´Â IsNumeric() ±×¸®°í Java ½ºÅ©¸³Æ®¿¡¼­´Â IsNaN() ÇÔ¼ö°¡ »ç¿ë °¡´ÉÇÏ´Ù.
°ü·Ã URL (CVE)
°ü·Ã URL (SecurityFocus)
°ü·Ã URL (ISS)