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


¾©¹«Íø°²±¸11010802024551ºÅ