PHP Ô¶³Ì´úÂëÖ´ÐÐÎó²îÇ徲ͨ¸æ

Ðû²¼Ê±¼ä 2019-10-24

Îó²î±àºÅºÍ¼¶±ð


CVE±àºÅ£ºCVE-2019-11043£¬£¬£¬£¬£¬£¬£¬Î£ÏÕ¼¶±ð£º¸ßΣ£¬£¬£¬£¬£¬£¬£¬CVSS·ÖÖµ£º¹Ù·½Î´ÆÀ¶¨


Ó°Ïì°æ±¾


µ±Nginx + php-fpm µÄЧÀÍÆ÷ÓÐÈçÏÂÉèÖõÄʱ¼ä£¬£¬£¬£¬£¬£¬£¬¶¼»á·ºÆðRCEÎó²î


  location ~ [^/]\.php(/|$) {

       fastcgi_split_path_info ^(.+?\.php)(/.*)$;

       fastcgi_param PATH_INFO       $fastcgi_path_info;

       fastcgi_pass   php:9000;

       ...

 }

}


µ±ÆôÓÃÁËÉÏÊö Nginx ÉèÖú󣬣¬£¬£¬£¬£¬£¬ÒÔÏ PHP °æ±¾Êܱ¾´ÎÎó²îÓ°Ï죬£¬£¬£¬£¬£¬£¬ÁíÍ⣬£¬£¬£¬£¬£¬£¬PHP 5.6°æ±¾Ò²ÊÜ´ËÎó²îÓ°Ï죬£¬£¬£¬£¬£¬£¬µ«ÏÖÔÚÖ»ÄÜCrash£¬£¬£¬£¬£¬£¬£¬²»¿ÉÒÔÔ¶³Ì´úÂëÖ´ÐУº


PHP 7.0 °æ±¾

PHP 7.1 °æ±¾

PHP 7.2 °æ±¾

PHP 7.3 °æ±¾


Îó²î¸ÅÊö


PHP-FPM£¨FastCGIÁ÷³ÌÖÎÀíÆ÷£©ÊÇÁíÒ»ÖÖPHP FastCGIʵÏÖ£¬£¬£¬£¬£¬£¬£¬¾ßÓÐһЩÆäËû¹¦Ð§£¬£¬£¬£¬£¬£¬£¬¿ÉÓÃÓÚÖÖÖÖ¹æÄ£µÄÕ¾µã£¬£¬£¬£¬£¬£¬£¬ÓÈÆäÊÇæµµÄÕ¾µã¡£¡£¡£¡£¡£¡£¡£


¹ØÓÚPHP 5.3.3֮ǰµÄphpÀ´Ëµ£¬£¬£¬£¬£¬£¬£¬PHP-FPMÊÇÒ»¸ö²¹¶¡°ü£¬£¬£¬£¬£¬£¬£¬Ö¼ÔÚ½«FastCGIÀú³ÌÖÎÀíÕûºÏ½øPHP°üÖС£¡£¡£¡£¡£¡£¡£ÈôÊÇÄãʹÓõÄÊÇPHP 5.3.3֮ǰµÄPHPµÄ»°£¬£¬£¬£¬£¬£¬£¬¾Í±ØÐ轫Ëüpatchµ½ÄãµÄPHPÔ´´úÂëÖУ¬£¬£¬£¬£¬£¬£¬ÔÚ±àÒë×°ÖÃPHPºó²Å¿ÉÒÔʹÓᣡ£¡£¡£¡£¡£¡£¶øPHP 5.3.3ÒѾ­¼¯³Éphp-fpmÁË£¬£¬£¬£¬£¬£¬£¬²»ÔÙÊǵÚÈý·½µÄ°üÁË¡£¡£¡£¡£¡£¡£¡£PHP-FPMÌṩÁ˸üºÃµÄPHPÀú³ÌÖÎÀí·½·¨£¬£¬£¬£¬£¬£¬£¬¿ÉÒÔÓÐÓÿØÖÆÄÚ´æºÍÀú³Ì¡¢¿ÉÒÔÆ½»¬ÖØÔØPHPÉèÖᣡ£¡£¡£¡£¡£¡£


ÔÚ9 Ô 14 ÈÕÖÁ 18 ¾ÙÐÐµÄ Real World CTF ÖУ¬£¬£¬£¬£¬£¬£¬ÍâÑóÇå¾²Ñо¿Ô± Andrew Danau ÔÚ½â¾öÒ»µÀ CTF ÎÊÌâʱ·¢Ã÷£¬£¬£¬£¬£¬£¬£¬ÏòÄ¿µÄЧÀÍÆ÷ URL ·¢ËÍ %0a ·ûºÅʱ£¬£¬£¬£¬£¬£¬£¬Ð§ÀÍ·µ»ØÒì³££¬£¬£¬£¬£¬£¬£¬ÒÉËÆ±£´æÎó²î¡£¡£¡£¡£¡£¡£¡£


9 Ô 26 ÈÕ£¬£¬£¬£¬£¬£¬£¬PHP ¹Ù·½Ðû²¼Îó²îͨ¸æ£¬£¬£¬£¬£¬£¬£¬ÆäÖÐÖ¸³ö£ºÊ¹Óà Nginx + php-fpm µÄЧÀÍÆ÷£¬£¬£¬£¬£¬£¬£¬ÔÚ²¿·ÖÉèÖÃÏ£¬£¬£¬£¬£¬£¬£¬±£´æÔ¶³Ì´úÂëÖ´ÐÐÎó²î¡£¡£¡£¡£¡£¡£¡£²¢ÇÒ¸ÃÉèÖÃÒѱ»ÆÕ±éʹÓ㬣¬£¬£¬£¬£¬£¬Î£º¦½Ï´ó¡£¡£¡£¡£¡£¡£¡£


Nginx ÉÏ fastcgi_split_path_info ÔÚ´¦Öóͷ£´øÓÐ %0a µÄÇëÇóʱ£¬£¬£¬£¬£¬£¬£¬»áÓÉÓÚÓöµ½»»Ðзû \n µ¼Ö PATH_INFO Ϊ¿Õ¡£¡£¡£¡£¡£¡£¡£¶ø php-fpm ÔÚ´¦Öóͷ£ PATH_INFO Ϊ¿ÕµÄÇéÐÎÏ£¬£¬£¬£¬£¬£¬£¬±£´æÂß¼­È±ÏÝ¡£¡£¡£¡£¡£¡£¡£¹¥»÷Õßͨ¹ýÈ«ÐĵĽṹºÍʹÓ㬣¬£¬£¬£¬£¬£¬¿ÉÒÔµ¼ÖÂÔ¶³Ì´úÂëÖ´ÐС£¡£¡£¡£¡£¡£¡£


Îó²îÑéÖ¤


POC£ºhttps://github.com/neex/phuip-fpizdam¡£¡£¡£¡£¡£¡£¡£


ÐÞ¸´½¨Òé


PHPÒÑÓÚ10ÔÂ12ºÅÐû²¼¸ÃÎó²î²¹¶¡£¡£¡£¡£¡£¡£¡£¬£¬£¬£¬£¬£¬£¬Çë²Î¿¼ÒÔÏÂÁ´½Ó×°Öò¹¶¡£¡£¡£¡£¡£¡£¡£º


https://bugs.php.net/patch-display.php?bug_id=78599&patch=0001-Fix-bug-78599-env_path_info-underflow-can-lead-to-RC.patch&revision=latest


ÓÉÓÚÎó²îʹÓÃÐèÒªNginx+php-fpmÇéÐΣ¬£¬£¬£¬£¬£¬£¬Óû§Ä¬ÈÏ×°ÖõÄÉèÖò»ÊÜÓ°Ï죬£¬£¬£¬£¬£¬£¬ÎªÈ·±£Çå¾²£¬£¬£¬£¬£¬£¬£¬½¨ÒéÄú¼ì²éÍâµØ Nginx ÉèÖÃÎļþ

CentOSĬÈÏĿ¼Ϊ/etc/nginx/nginx.conf


È·ÈÏÊÇ·ñ±£´æÉÏÊöΣº¦ÉèÖ㬣¬£¬£¬£¬£¬£¬ÈôÊDZ£´æ£¬£¬£¬£¬£¬£¬£¬½¨ÒéÄúÕÒµ½²¢É¾³ýÈçÏÂÉèÖÃÏ


fastcgi_split_path_info ^(.+?\.php)(/.*)$;

fastcgi_param PATH_INFO       $fastcgi_path_info;


²Î¿¼Á´½Ó


https://github.com/neex/phuip-fpizdam