MySQL¿¡¼ º¸¾ÈÀ§ÇØ load_file() °æ·Î Á¦ÇÑÇϱâ | ÀÛ¼ºÀÏ : 2010/05/27 21:02 |
Á¶È¸¼ö : 26455 |
Á¦ ¸ñ : MySQL¿¡¼ º¸¾ÈÀ§ÇØ load_file() °æ·Î Á¦ÇÑÇϱâ ÀÛ¼ºÀÚ : ÁÁÀºÁøÈ£(truefeel, http://coffeenix.net/ ) ÀÛ¼ºÀÏ : 2009.12.1(È) Á¤¸®ÀÏ : 2010.5.14(±Ý) 1. SQL Injection¿¡¼ load_file() ÇÔ¼öÀÇ À§Çè SQL Injection(SQL ÀÎÁ§¼Ç) °ø°Ý¿¡ ´ëóÇϱâ À§Çؼ´Â ´ÙÀ½°ú °°Àº Á¶Ä¡°¡ ÇÊ¿äÇÏ´Ù. - SQL Injection°ø°Ý µî À¥Ãë¾à¼ºÀÌ ¾øµµ·Ï ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Â°Ô ¿ì¼±ÀÌ´Ù. (±×·¯³ª ¸¹Àº »çÀÌÆ®¿¡¼ À̺κÐÀº µÞÀüÀÌ´Ù.) - ÁÖ±âÀûÀ¸·Î ¸ðÀÇ Å×½ºÆ®¸¦ ÇÑ´Ù. - À¥¹æȺ®¿¡¼ UNION SELECT, UNION ALL SELECT, LOAD_FILE() µî ´Ù¾çÇÑ SQL Injection °ø°Ý À¯ÇüÀ» Â÷´ÜÇÑ´Ù. - ±×¸®°í, load_file() ÇÔ¼öÀÇ °æ·Î Á¦Çѵµ °í·ÁÇÑ´Ù. MySQLÀÇ SELECT LOAD_FILE() ÇÔ¼ö, LOAD DATA´Â ¼¹ö³»¿¡ ÀÖ´Â ÆÄÀÏÀ» ÀоîµéÀÌ´Â ¸í·ÉÀÌ´Ù. MySQL µ¥¸óÀÌ ÆÄÀÏÀ» ÀÐÀ» ±ÇÇÑÀÌ ÀÖ´Ù¸é, ¼¹ö³»ÀÇ °æ·Î¿Í »ó°ü¾øÀÌ ¾î¶°ÇÑ ÆÄÀÏÀÌ¶óµµ ÀÐÀ» ¼ö ÀÖ´Ù. À¥ÆäÀÌÁö°¡ SQL Injection °ø°ÝÀÇ Ãë¾àÁ¡ÀÌ ÀÖ´Ù°í ÇÒ ¶§ ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î ½±°Ô À¥¿¡¼ ¼¹ö ³»ÀÇ ÆÄÀÏÀ» È®ÀÎÇÒ ¼ö ÀÖ´Â À§Ç輺ÀÌ Á¸ÀçÇÑ´Ù.
ÀÌ ÇÔ¼ö°¡ Æí¸®¼º, È°¿ë¼º Ãø¸é¿¡¼´Â ÁÁÀ» ¼ö ÀÖÁö¸¸, º¸¾È¿¡´Â Ãë¾àÇÑ Åë·Î¸¦ Á¦°øÇÏ´Â ¼ÀÀÌ´Ù. ÃÖ±Ù(2009¿ù ¸») ·ç¸¶´Ï¾ÆÀÇ Unu ÇØÄ¿´Â ¼¼°è ÁÖ¿ä »çÀÌÆ®¿Í ±¹³» º¸¾È ¾÷ü »çÀÌÆ®¸¦ SQL Injection°ø°ÝÀ¸·Î ÇØÅ·À» Çß´Ù. ±×¸®°í, MySQLÀÇ load_file() ÇÔ¼ö·Î ¼¹öÀÇ /etc/ ÆÄÀϱîÁö ĸÃÄÇÏ¿© ºí·Î±×¿¡ °ø°³ÇÑ ÀûÀÌ ÀÖ´Ù. ÀÌ ±Û¿¡¼´Â ÀÛÀº ºÎºÐÀÎ load_file() ÇÔ¼öÀÇ °æ·Î Á¦ÇÑ¿¡ ´ëÇؼ ¾ê±âÇÒ °ÍÀÌ´Ù. 2. MySQL¼¹ö·Î Á÷Á¢Àû Á¢±ÙÀÌ ºÒ°¡´ÉÇصµ DB¼¹öÀÇ ÆÄÀÏÀ» º¼ ¼ö ÀÖ´Ù.
À§Ã³·³ À¥¼¹ö¿Í MySQL¼¹ö°¡ ºÐ¸®µÇ¾î ÀÖÀ» ¶§, À¥¼¹ö¿¡¼ load_file("/etc/passwd") ÇÔ¼ö¸¦ È£ÃâÇß´Ù¸é ¾î¶² ¼¹öÀÇ ÆÄÀÏÀ» º¸¿©ÁÙ±î? MySQL µ¥¸óÀÌ local ÆÄÀÏ¿¡ Á¢±ÙÇÏ¿© º¸¿©ÁÖ´Â °ÍÀ̹ǷÎ, B¼¹öÀÇ ÆÄÀÏÀÌ µÈ´Ù. ±×·¯¹Ç·Î ¿ÜºÎ¿¡¼ MySQL¼¹ö·ÎÀÇ Á÷Á¢ÀûÀÎ Á¢±ÙÀÌ ºÒ°¡´ÉÇÏ´õ¶óµµ, load_file()ÇÔ¼ö¸¦ ÀÌ¿ëÇÒ ¼ö ÀÖ´Ù¸é DB¼¹ö ³»ºÎÀÇ ÆÄÀÏÀ» º¼ ¼ö ÀÖ´Ù. 3. MySQL¿¡¼ load_file() ÇÔ¼öÀÇ °æ·Î¸¦ Á¦ÇÑÇÏ´Â ¹æ¹ý MySQL ¸Å´º¾óÀ» »ìÆ캸ÀÚ.
À§Ã³·³ MySQL 5.1.17ºÎÅÍ´Â LOAD_FILE() ÇÔ¼ö, LOAD DATA, SELECT ... OUTFILEÀ» ƯÁ¤ µð·ºÅ丮³»ÀÇ ÆÄÀϸ¸ Çã¿ëÇϵµ·Ï ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. --secure-file-priv ¿É¼ÇÀº µ¿ÀûÀ¸·Î´Â ¼³Á¤°ªÀ» º¯°æÇÒ ¼ö°¡ ¾ø´Ù. my.conf ÀÇ '[mysqld]' ¼½¼Ç¿¡ ´ÙÀ½°ú °°Àº ¼³Á¤À» ÇÑ´Ù. (°æ·Î´Â ¿î¿µ ȯ°æ¿¡ ¸Â°Ô ÇÒ °Í)
À§Ã³·³ ¼³Á¤ÇÏ°í MySQL µ¥¸óÀ» ½ÇÇàÇϸé load_file()À» »ç¿ëÇÒ ¼ö ÀÖ´Â °æ·Î°¡ /var/tmpÀ¸·Î Á¦ÇÑÀÌ µÈ´Ù. 4. secure-file-priv ¼³Á¤ Àû¿ë Àü/ÈÄ ºñ±³ 1) secure-file-priv= Àû¿ëÀü ¨ç SELECT °á°ú¸¦ /tmp/result.txt ÆÄÀÏ·Î ÀúÀå
¨è ±ÇÇÑÀÌ ÀÖ´Â ÆÄÀÏÀ» load_file()·Î ÀÐÀ¸¸é ȸ鿡 ÆÄÀÏ ³»¿ëÀÌ ±×´ë·Î Ãâ·ÂµÈ´Ù. (°á°ú ȸéÀº »ý·«) ¨é ±ÇÇÑÀÌ ¾ø´Â ÆÄÀÏÀ» load_file()·Î ÀÐÀ» ¸é NULL¸¸ Ç¥½ÃµÈ´Ù.
2) secure-file-priv= Àû¿ëÈÄ ¨ç ¼³Á¤°ª È®ÀÎ
¨è °æ·Î¸¦ /var/tmp/ ·Î Á¦ÇÑÇßÀ¸¹Ç·Î, /etc/ ¾Æ·¡ ÆÄÀÏÀº NULL·Î Ç¥½ÃµÈ´Ù. (/etc/protocols ÆÄÀÏÀº ´©±¸³ª Àб⠱ÇÇÑÀÌ ÀÖÀ½)
¨é SELECT ... INTO OUTFILE »ç¿ëÇÒ ¶§ ¿¡·¯°¡ ¹ß»ýÇÑ´Ù.
5. Âü°í ÀÚ·á 1) MySQL °ü·Ã * MySQL »ç¿ëÀڸŴº¾ó - ¸í·É¾î ¿É¼Ç http://www.mysqlkorea.co.kr/sub.html?mcode=manual&scode=user&m_no=23109&cat1=&cat2=&cat3=〈=k&ver_name=USER * MYSQL 5.1 ¸Å´º¾ó - 5.1.2. Server Command Options ( --secure-file-priv=path ) http://dev.mysql.com/doc/refman/5.1/en/server-options.html * MYSQL LOAD_FILE SQL Injection http://www.tullyrankin.com/mysql-load_file-sql-injection LOAD_FILE ÇÔ¼ö´Â 16Áø¼ö ¹®ÀÚ¿·Î ÆÄÀÏÀ» ÀÐÀ» ¼öµµ ÀÖ´Ù. (¿¹) /etc/passwd ´Â 0x2f6574632f706173737764. LOAD_FILE(0x2f6574632f706173737764) ¡Ø ÀÌ URL¿¡ ¼Ò°³µÈ perl½ºÅ©¸³Æ® 4¹ø° ÁÙÀÇ 0x$encn"; Àº 0x$enc\n"; ¸¦ Àß ¸ø Ç¥±âÇÑ °ÍÀÓ 2) SQL Injection °ü·Ã * SQL Injection Cheat Sheet http://michaeldaw.org/sql-injection-cheat-sheet * Backdoor webserver using MySQL SQL Injection http://www.greensql.net/publications/backdoor-webserver-using-mysql-sql-injection * 12.22~23 Ä¿ÇǴнº À̾߱â (Intel»çÀÌÆ® SQL Injectionµî) (2009.12.24) http://coffeenix.net/bbs/viewtopic.php?p=5988#5988 * ´ë·® SQL Injection °ø°Ý ÁÖÀÇ (2009.12.11) http://coffeenix.net/bbs/viewtopic.php?p=5978#5978 * nProtect À¥»çÀÌÆ®, SQL Injection°ø°Ý ´çÇØ (2009.11.30) http://truefeel.tistory.com/171 |
Ä¿ÇǴнº, ½Ã½ºÅÛ ¿£Áö´Ï¾îÀÇ ½°ÅÍ / URL : http://coffeenix.net/board_view.php?bd_code=1707 |