phpMyAdminÔ¶³ÌÖ´ÐдúÂë·ì϶°²È«¹«¸æ

°ä²¼¹¦·ò 2018-07-03

·ì϶±àºÅºÍ¼¶±ð


CVE-2018-12613  ³§ÉÌ×ÔÆÀ£º¸ßΣ  CVSS·ÖÖµ£º¹Ù·½Î´ÆÀ¶¨


Ó°ÏìÁìÓò


ÊÜÓ°ÏìµÄϵͳ°æ±¾£º


phpMyAdmin 4.8.0
phpMyAdmin 4.8.1


·ì϶¸ÅÊö


phpMyAdmin ÊÇÒ»¸öÒÔPHPΪ»ù´¡£¬ÒÔWeb-Base·½Ê½¼Ü¹¹ÔÚÍøÕ¾Ö÷»úÉϵÄMySQLµÄÊý¾Ý¿âÖÎÀí¹¤¾ß£¬ÈÃÖÎÀíÕß¿ÉÓÃWeb½Ó¿ÚÖÎÀíMySQLÊý¾Ý¿â ¡£


ÔÚphpMyAdmin 4.8.x°æ±¾ÖУ¬·¨Ê½Ã»ÓÐÑϸñ½ÚÔìÓû§µÄÊäÈ룬¹¥»÷ÕßÄܹ»ÀûÓÃË«³Á±àÂëÈÆ¹ý·¨Ê½µÄ°×Ãûµ¥ÏÞ¶È£¬Ôì³ÉÎļþÔ̺¬·ì϶ ¡£


´Ë·ì϶ʹ¾­¹ýÉí·ÝÑéÖ¤µÄÔ¶³Ì¹¥»÷Õß¿ÉÄÜÔÚ·þÎñÆ÷ÉÏÖ´ÐÐËÁÒâPHP´úÂë ¡£


phpMyAdminµÄ¹úÄÚÊý¾Ýͳ¼ÆÍ¼ÈçÏ£º


 GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


·ì϶·ÖÎö


ÔÚ/index.php


GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾

 

ÕâÀïµÄtarget Äܹ»Ö±½Ó´«ÖµÊäÈë ¡£ÎÒÃÇÄܹ»´«ÈëÒ»¸ö±¾µØÎļþõè¾¶È¥ÈÃÆäÔ̺¬£¬¾Í»áÔì³ÉLFI·ì϶ ¡£


Ê×ÏÈ£¬ÎÒÃÇÂú×ã4¸öǰÌ᣺


1£®´«ÈëµÄtarget ±ØÒªÊÇÒ»¸ö×Ö·û´® ¡£
2£®²»ÄÜÒÔ/index/ ¿ªÍ· ¡£

3£®²»ÄÜÔÚ$target_blacklistÊý×éÄÚ ¡£


 GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


4£®Âú×ãcheckPageValidityº¯ÊýÒªÇó ¡£


¸ú×ÙÒ»ÏÂcheckPageValidityº¯Êý


ÔÚ/libraries/classes/Core.php


 GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


¸Ãº¯ÊýÄÚ£¬ÓÐÈý´¦·µ»ØtureµÄ´¦Ëù£¬Ö»ÓÐÓÐËÁÒâÒ»´¦·µ»Øture¾ÍÄܹ» ¡£¹Û²ìÕâÈý´¦£¬ÓÐÒ»¸ö¹²Í¬µã£¬¶¼ÊDZØÒª$pageÔÚ$whitelistÊý×éÖÐÄڲŻ᷵»Øtrue ¡£


 GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


ÎÒÃÇÏÈ¿´µÚÒ»¸ö·µ»ØtrueµÄ´¦Ëù ¡£


 GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


ÕâÀïµÄ$pageÔÚin_array֮ǰûÓо­¹ýÈκεĽ¨ÊΣ¬Ö±½Ó¾ÍÓë$whitelist×÷±ÈÁ¦ ¡£Ã»Óз¨×ÓÈÆ¹ý£¬´«ÈëµÄtargetÖµÖ»ÄÜΪ°×Ãûµ¥ÀïµÄÎļþÃû²ÅÐÐ ¡£ºÜÏÔÖø£¬µÚÒ»¸ö²¢²»ÄÜÀûÓà ¡£


ÔÙÀ´¿´µÚ¶þ¸ö


 GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


ÏȽéÉÜÏÂÕâЩº¯ÊýµÄ×÷Óãº


mb_strpos()º¯ÊýµÄÒâ˼ÊDzéÕÒ×Ö·û´®ÔÚÁíÒ»¸ö×Ö·û´®Öгõ´Î³öÏֵĵØÎ» ¡£


mb_substr()º¯ÊýµÄÒâ˼ÊÇ£º


string mb_substr ( string $str, int $start [, int $length = NULL [, string $encoding = mb_internal_encoding()]] )

´Ó$str×Ö·û´®ÖУ¬ÌáÈ¡´Ó$startµØÎ»ÆðÍ·£¬³¤¶ÈΪ$lengthµÄ×Ö·û´® ¡£


Äܹ»¿´³ö£¬µÚ¶þ¸öÄܹ»·µ»Øture£¬ÎÒÃÇÀûÓÃdb_sql.php?/../../Ìåʽ¾ÍÄܹ»´ïµ½Ö÷ÕÅ£¬Èƹý°×Ãûµ¥ÏÞ¶È ¡£ÄÇÊDz»ÊÇÕâÑù¾ÍÄܹ»Ôì³É·ì϶ÁËÄØ£¿


Èç¹ûÎÒÃÇÓÃdb_sql.php?/../../../aaa.txtÀ´Èƹý°×Ãûµ¥Ï޶ȽøÐÐÔ̺¬Îļþ ¡£


 GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


ÄÇÕâÀï¾ÍÊÇ include ¡®db_sql.php?/../../../aaa.txt¡¯ ¡£


ÕâÖÖÌåʽ²¢²»ÄÜ¿çõè¾¶Ô̺¬£¬ÓÉÓÚphp·¨Ê½°Ñ£¿ºÅºóÃæµÄÆ÷²Äµ±³ÉÊÇ´«Èëdb_sql.phpÎļþµÄ²ÎÊý ¡£


ÔÙÀ´¿´µÚÈý¸ö£º


 GA»Æ½ð¼×¡¤(ÖйúÇø)¹Ù·½ÍøÕ¾


µÚÈý¸öºÍµÚ¶þ¸ö¶Ô±È¶à³öÁ˸öurldecode()º¯Êý ¡£


¶øÎÊÌâ¸ÕºÃ³öÔÚÁËÕâ¸öurldecode()º¯Êý ¡£


ÎÒÃÇÄܹ»ÀûÓÃË«³Á±àÂëÈÆ¹ý£¬½«?¾­¹ýÁ½´Î±àÂë%253f¾ÍÄܹ»Èƹý°×Ãûµ¥ÑéÖ¤ ¡£


Ô­ÒòÊÇ£º


%253f ´«Èëʱ£¬Ê×ÏȻᱻ×Ô¶¯½âÂëÒ»´Î£¬Ôì³É%3f ¡£¶øºóurldecode()ÔÙ½âÂëÒ»´Î£¬¾ÍÔì³ÉÁË ? ¡£ ³É¹¦ÈƹýÁ˰×Ãûµ¥ÏÞ¶È ¡£


ÕâÖÖÇé¿öÏÂincludeµÄÔ̺¬Çé¿ö¾ÍÊÇÕâÑùµÄ£¬Ò²¾ÍÄܹ»ËÁÒâÔ̺¬±¾µØÎļþÁË ¡£


include  db_sql.php%3f/../../../aaa.txt ¡£


·ì϶ÀûÓÃ


ÆëÈ«µÄexp£º


GET /index.php?target=sql.php%3f/../../etc/passwd


tips£º


1¡¢%3f ½«±»½âÂë²¢³ÉΪ? ¡£

2¡¢Core::checkPageValidity°þÀëËùÓÐÄÚÈÝ?²¢sql.phpÔÚ°×Ãûµ¥ÄÚÕÒµ½£º²é³­±»Èƹý£¡
3¡¢index.phpÔËÐÐinclude 'sql.php?/../../etc/passwd'£¬PHPµÄħÊõÀ´×ª»»õè¾¶ ../etc/passwd£¬¶ø²»²é³­Ä¿Â¼ÊÇ·ñsql.php?´æÔÚ ¡£×îºó£¬ËüÔ̺¬../etc/passwd³É¹¦ ¡£


ҪдÕâ¸ö·ì϶£¬Äܹ»Ã¶¾ÙÎļþõè¾¶£¬È磺


/etc/passwd

../../etc/passwd
../windows/win.ini

../../windows/win.ini


Ò»µ©ÄãÕÒµ½ÁË..Äã±ØÒªÔ¤ÏÈÉèÖõÄÊýÁ¿ £¬ÄãÄܹ»½«ÄãµÄphpÓÐÐ§ÔØºÉ×¢Èëµ½½Ó¼ûÈÕÖ¾ÖУ¬»òÕßÔËÐÐÒ»¸ö²éÎÊSELECT ¡®<?php phpinfo();?>'£¬sql.php²¢Ô̺¬Äã×Ô¼ºµÄ»á»°Îļþ£¨ÀýÈç/var/lib/php5/sess_<PHPSESSID>£©£¬ËüÔ̺¬ÄãµÄSQL²éÎÊ£¬ÒÔÖ´ÐÐËÁÒâPHP´úÂë ¡£


½¨¸´½¨Òé


Ŀǰ¹Ù·½Òѽ¨¸´¸Ã·ì϶£¬°ä²¼ÁË×îа汾4.8.2£¬¿É´Ó¹ÙÍøÏÂÔØ×îа汾 ¡£


ÏÂÔØÁ´½Ó£ºhttps://www.phpmyadmin.net/news/2018/6/21/security-fix-phpmyadmin-482-released/ ¡£


²Î¿¼Á´½Ó


https://www.phpmyadmin.net/security/PMASA-2018-4/
https://www.securityfocus.com/bid/104532
https://nvd.nist.gov/vuln/detail/CVE-2018-12613