PHP SmartyÄ£°æ´úÂë×¢ÈëÎó²î£¨CVE-2021-26120£©
Ðû²¼Ê±¼ä 2021-02-260x00 Îó²î¸ÅÊö
CVE ID | CVE-2021-26120 | ʱ ¼ä | 2021-02-26 |
Àà ÐÍ | ´úÂë×¢Èë | µÈ ¼¶ | ¸ßΣ |
Ô¶³ÌʹÓà | ÊÇ | Ó°Ïì¹æÄ£ | PHP Smarty < 3.1.39 |
0x01 Îó²îÏêÇé
SmartyÊÇͨ¹ýPHP¿ª·¢µÄÄ£°åÒýÇæ£¬£¬£¬£¬£¬ËüÍÑÀëÁËPHPÂß¼´úÂëÓëÍâ¹Û£¨HTMLÒ³£©ÒÔ±ãÓÚÖÎÀí¡£¡£¡£
¿ËÈÕ£¬£¬£¬£¬£¬PHP Smarty±»Åû¶±£´æ2¸öPHP´úÂë×¢ÈëÎó²î£¨CVE-2021-26120ºÍCVE-2021-26119£©£¬£¬£¬£¬£¬¹¥»÷Õß¿ÉÒÔͨ¹ýʹÓÃÕâЩÎó²îÀ´×¢Èëí§Òâ´úÂë¡£¡£¡£
template_objectɳÏäÌÓÒÝPHP´úÂë×¢ÈëÎó²î£¨CVE-2021-26119£©
ÔÚSmartyÖУ¬£¬£¬£¬£¬Smarty´Ó$smarty.template_object±äÁ¿»á¼ûʵÀý£¬£¬£¬£¬£¬ÓÉÓÚ¹¥»÷Õß¿ÉÒÔ»á¼ûsmarty»òparentÊôÐÔ£¬£¬£¬£¬£¬´Ó¶ø¿ÉÒÔ»á¼ûSmartyʵÀý¡£¡£¡£ÀÖ³ÉʹÓôËÎó²îµÄ¹¥»÷Õß¿ÉÒÔͨ¹ý½á¹¹¶ñÒâÊý¾Ý£¬£¬£¬£¬£¬×îÖÕÔì³ÉÔ¶³Ì´úÂëÖ´ÐС£¡£¡£
POC´úÂëÈçÏ£¨ÐèÁ½´ÎÔËÐУ¬£¬£¬£¬£¬µÚÒ»´ÎдÈ뻺´æÎļþÈ»ºó½«ÆäÁýÕÖ£¬£¬£¬£¬£¬µÚ¶þ´Î´¥·¢»º´æ²¢°üÀ¨ÎļþÒÔÖ´ÐÐÔ¶³Ì´úÂë¡£¡£¡££©£º
http://localhost:8000/page.php?poc=string:{$s=$smarty.template_object->smarty}{$fp=$smarty.template_object->compiled->filepath}{Smarty_Internal_Runtime_WriteFile::writeFile($fp,"<?php+phpinfo();",$s)}
Smarty_Internal_Runtime_TplFunctionɳÏäÌÓÒÝPHP´úÂë×¢ÈëÎó²î£¨CVE-2021-26120£©
ÓÉÓÚSmartyÔÚ±àÒëÄ£°åÓ﷨ʱ£¬£¬£¬£¬£¬Smarty_Internal_Runtime_TplFunctionÀàÔÚ½ç˵ʱ²»¿É׼ȷ¹ýÂËnameÊôÐÔtplFunctions£¬£¬£¬£¬£¬¹¥»÷Õß¿ÉÒÔͨ¹ý×¢ÈëPayload£¬£¬£¬£¬£¬×îÖÕÔ¶³ÌÖ´ÐдúÂë¡£¡£¡£
PoC´úÂëÈçÏ£º
http://localhost:8000/page.php?poc=string:{function+name='rce(){};system("id");function+'}{/function}
0x02 ´¦Öóͷ£½¨Òé
ÏÖÔÚ¸ÃÎó²îÒѾÐÞ¸´£¬£¬£¬£¬£¬½¨Òéʵʱ¸üÐÂÉý¼¶µ½3.1.39»ò¸ü¸ß°æ±¾¡£¡£¡£
Á´½ÓÈçÏ£º
https://github.com/smarty-php/smarty/blob/master/CHANGELOG.md
0x03 ²Î¿¼Á´½Ó
https://github.com/smarty-php/smarty/security/advisories/GHSA-w5hr-jm4j-9jvq
https://github.com/smarty-php/smarty/security/advisories/GHSA-3rpf-5rqv-689q
https://srcincite.io/blog/2021/02/18/smarty-template-engine-multiple-sandbox-escape-vulnerabilities.html
0x04 ʱ¼äÏß
2021-02-18 Steven SeeleyÅû¶Îó²î
2021-02-26 VSRCÐû²¼Ç徲ͨ¸æ
0x05 ¸½Â¼
CVSSÆÀ·Ö±ê×¼¹ÙÍø£ºhttp://www.first.org/cvss/