¡¾Çå¾²Íþвͨ¸æ¡¿php-fpmÔ¶³Ì´úÂëÖ´ÐÐÎó²î(CVE-2019-11043)
2019-10-25
×ÛÊö
¿ËÈÕ£¬ÍâÑóÇå¾²Ñо¿Ô±Ðû²¼ÁËÒ»¸ö±£´æÓÚphp-fpmÖеÄÎó²î£¨CVE-2019-11043£©£¬ÔÚÄ³Ð©ÌØ¶¨NginxÉèÖÃÖУ¬¸ÃÎó²î¿ÉÄܻᵼÖÂÔ¶³Ì´úÂëÖ´ÐС£
Îó²î±£´æÓÚÎļþsapi/fpm/fpm/fpm_main.c£¨https://github.com/php/php-src/blob/master/sapi/fpm/fpm/fpm_main.c#L1140£©£¬ÆäÖмÙÉèenv_path_infoµÄǰ׺¼´ÊÇphp¾ç±¾µÄ·¾¶£¬¿ÉÊÇÏÖʵÉÏ´úÂë²»»á¼ì²é´Ë¼ÙÉèÊÇ·ñÖª×㣬ȱÉٸüì²é»áµ¼Ö¡°path_info¡±±äÁ¿ÖеÄÖ¸ÕëÎÞЧ¡£µ±ÔÚijЩNginxÉèÖÃÖУ¬¹¥»÷Õß¿ÉÒÔʹÓû»Ðзû£¨±àÂëÃûÌÃΪ£¥0a£©À´ÆÆËð\`fastcgi_split_path_info\`Ö¸ÁîÖеÄregexp£¬regexpË𻵽«µ¼Ö¿ÕPATH_INFO£¬´Ó¶ø´¥·¢¸ÃÎó²î¡£
¾ÝÏàʶ£¬¸ÃÎó²îÊÇÑо¿Ô±Andrew DanauÔÚÒ»³¡CTF½ÇÖðÀú³ÌÖÐÎÞÒâ·¢Ã÷µÄ£¬µ±ËûÏò·þÎñÆ÷URL·¢ËÍ%0aʱ£¬·þÎñÆ÷·µ»ØÒì³£ÉîÈëÑо¿ºó·¢Ã÷´ËÎó²î¡£
²Î¿¼ÅþÁ¬£º
https://lab.wallarm.com/php-remote-code-execution-0-day-discovered-in-real-world-ctf-exercise/
ÊÜÓ°Ïì°æ±¾
nginx + php-fpmÇéÐÎÖУ¬Ê¹ÓÃÈçÏÂnginxÉèÖã¬ËùÓÐPHP 7+°æ±¾¾ùÊÜÓ°Ï죨PHP 7.0¡¢PHP 7.1¡¢PHP 7.2¡¢PHP 7.3£©£¬ÇÒÏÖÔÚÔÚPHP 5.6°æ±¾ÉÏÒ²¿ÉÔì³ÉÍ߽⡣
ÌØ¶¨µÄnginxÉèÖÃÈçÏ£º
|
location ~ [^/].php(/|$) { fastcgi_split_path_info ^(.+?.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php:9000; ... } } |
Çå¾²½¨Òé
1¡¢PHP¹Ù·½ÒÑÓÚ10ÔÂ12ºÅÐû²¼²¹¶¡£¬ÏêÇé²Î¿¼Á´½Ó£¬½¨ÒéÊÜÓ°ÏìÓû§Éý¼¶¾ÙÐÐÐÞ¸´¡£
2¡¢¼ì²énginxÉèÖã¬ÈôÊDZ£´æÉÏÊöÒ×Êܹ¥»÷ÉèÖ㬽¨Òéɾ³ý
fastcgi_split_path_info ^(.+?.php)(/.*)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
²Î¿¼Á´½Ó£º
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
Éù Ã÷
±¾Ç徲ͨ¸æ½öÓÃÀ´ÐÎò¿ÉÄܱ£´æµÄÇå¾²ÎÊÌ⣬AG¹«Ë¾¿Æ¼¼²»Îª´ËÇ徲ͨ¸æÌṩÈκΰü¹Ü»òÔÊÐí¡£ÓÉÓÚÈö²¥¡¢Ê¹ÓôËÇ徲ͨ¸æËùÌṩµÄÐÅÏ¢¶øÔì³ÉµÄÈκÎÖ±½Ó»òÕß¼ä½ÓµÄЧ¹û¼°Ëðʧ£¬¾ùÓÉʹÓÃÕß×Ô¼ºÈÏÕæ£¬AG¹«Ë¾¿Æ¼¼ÒÔ¼°Ç徲ͨ¸æ×÷Õß²»Îª´Ë¼ç¸ºÈκÎÔðÈΡ£AG¹«Ë¾¿Æ¼¼ÓµÓжԴËÇ徲ͨ¸æµÄÐÞ¸ÄÏ¢ÕùÊÍȨ¡£ÈçÓû×ªÔØ»òÈö²¥´ËÇ徲ͨ¸æ£¬±ØÐè°ü¹Ü´ËÇ徲ͨ¸æµÄÍêÕûÐÔ£¬°üÀ¨°æÈ¨ÉùÃ÷µÈËùÓÐÄÚÈÝ¡£Î´¾AG¹«Ë¾¿Æ¼¼ÔÊÐí£¬²»µÃí§ÒâÐ޸ĻòÕßÔö¼õ´ËÇ徲ͨ¸æÄÚÈÝ£¬²»µÃÒÔÈκη½·¨½«ÆäÓÃÓÚÉÌҵĿµÄ¡£
¹ØÓÚAG¹«Ë¾¿Æ¼¼
±±¾©ÉñÖÝAG¹«Ë¾ÐÅÏ¢Çå¾²¿Æ¼¼¹É·ÝÓÐÏÞ¹«Ë¾£¨¼ò³ÆAG¹«Ë¾¿Æ¼¼£©½¨ÉèÓÚ2000Äê4Ô£¬×ܲ¿Î»ÓÚ±±¾©¡£ÔÚº£ÄÚÍâÉèÓÐ30¶à¸ö·ÖÖ§»ú¹¹£¬ÎªÕþ¸®¡¢ÔËÓªÉÌ¡¢½ðÈÚ¡¢ÄÜÔ´¡¢»¥ÁªÍøÒÔ¼°½ÌÓý¡¢Ò½ÁƵÈÐÐÒµÓû§£¬Ìṩ¾ßÓн¹µã¾ºÕùÁ¦µÄÇå¾²²úÆ·¼°½â¾ö¼Æ»®£¬×ÊÖú¿Í»§ÊµÏÖÓªÒµµÄÇ徲˳³©ÔËÐС£
»ùÓÚ¶àÄêµÄÇå¾²¹¥·ÀÑо¿£¬AG¹«Ë¾¿Æ¼¼ÔÚÍøÂç¼°ÖÕ¶ËÇå¾²¡¢»¥ÁªÍø»ù´¡Çå¾²¡¢ºÏ¹æ¼°Çå¾²ÖÎÀíµÈÁìÓò£¬Îª¿Í»§ÌṩÈëÇÖ¼ì²â/·À»¤¡¢¿¹¾Ü¾ø·þÎñ¹¥»÷¡¢Ô¶³ÌÇå¾²ÆÀ¹ÀÒÔ¼°WebÇå¾²·À»¤µÈ²úÆ·ÒÔ¼°×¨ÒµÇå¾²·þÎñ¡£
±±¾©ÉñÖÝAG¹«Ë¾ÐÅÏ¢Çå¾²¿Æ¼¼¹É·ÝÓÐÏÞ¹«Ë¾ÓÚ2014Äê1ÔÂ29ÈÕÆðÔÚÉîÛÚ֤ȯÉúÒâËù´´Òµ°åÉÏÊУ¬¹ÉƱ¼ò³Æ£ºAG¹«Ë¾¿Æ¼¼£¬¹ÉƱ´úÂ룺300369¡£

AG¹«Ë¾ÔÆ





