【漏洞预警】PHPCMS 2008远程代码注入漏洞(CVE-2018-19127)预警

  • 来源:深信服安全中心
  • 发布时间:2018-11-28
#

事件描述

近日,PHPCMS 2008版本被爆出远程代码注入漏洞,漏洞CVE编号为:CVE-2018-19127。该漏洞利用向PHPCMS网站路径可控的缓存文件写入任意内容,从而可以写入PHP代码,获取网站WebShell,最终获取到网站的最高权限。该漏洞利用难度小,并且危害性极大。

千里百科

PHPCMS由国内80后知名创业者钟胜辉于2005年推出,是国内知名内容管理系统,它是一款基于 PHP 技术和 AJAX 技术的企业级网站内容管理系统,旨在帮助用户解决日益复杂与重要的 Web 内容的创建、维护、发布和应用。PHPCMS将模块化开发方式做为功能开发形式,框架易于功能扩展,代码维护,优秀的二次开发能力,可满足所有网站的应用需求,所以迅速占领了国内内容管理系统领域的大片领土。从2005年PHPCMS第一版推出,到2007年推出PHPCMS 2007版本,再到2008年年底推出了PHPCMS 2008版本,PHPCMS使用量大大增加,尤其是PHPCMS 2008版本因其优秀的性能备受好评。2010年盛大在线收购PHPCMS后,PHPCMS推出了主线产品PHPCMS V9版本,到2017年5月推出了最新的V9.6.3版本,PHPCMS仍为现在国内领先的内容管理系统。

根据全网数据统计,使用PHPCMS的网站多达4万多个,其中大部分集中在国内,共有约3万余个,占使用量的75%以上,同时,PHPCMS在教育行业约有上千个网站使用,在政府部门的网站中,也有上百个网站使用,其他则用于商业用途,具体分布如下图:

图片1.png 

从图中可以看出,PHPCMS的使用范围较广,其中在政府部门中不乏市县级政府这样的客户;教育行业内,也不乏国内大学的校级、院系官网使用PHPCMS作为其发布信息的官方主页;商业用途中,PHPCMS也备受中小型企业的青睐。由于PHPCMS使用广泛,并且攻击者利用该漏洞可以向路径可控的文件写入恶意脚本代码,后续将能够向该文件发送WebShell指令,在服务器上执行任意代码,因此该代码注入漏洞的影响很大。

漏洞分析

该漏洞存在于PHPCMS 2008源码的type.php文件中:

图片2.png

从代码中可知,$template参数可以由外部传入,而该参数只经过判空处理后就传入了template()函数处理,template()函数在/include/global.func.php文件中被定义:

图片3.png 在template()函数中中,$template参数最终要被template_compile()函数处理,而template_compile()函数存在于include/template.func.php文件中:

图片4.png 最终,$template参数被用于compiledtplfile的路径生成,然后被写入到content中,即compiledtplfile对应路径下的PHP文件中去。由于$template未被过滤,所以该PHP文件下可以写入任意代码,最终造成任意代码注入漏洞。

漏洞复现

我们在官网上下载PHPCMS 2008-sp4版本复现漏洞,首先安装好该系统,出现如下首页:

图片5.png然后访问构造好的Payload来写入代码:

siteserver/type.php?template=tag_(){};@unlink(_FILE_);assert($_POST[sangfor]);{//../rss

图片6.png然后访问写入的WebShell,漏洞复现成功:

图片7.png影响版本

PHPCMS 2008版本

参考链接

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-19127

解决方案

修复建议

目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的下载页以获取最新版本:http://www.phpcms.cn/

深信服解决方案

深信服下一代防火墙可轻松防御此漏洞,建议部署深信服下一代防火墙的用户开启安全防护规则,可轻松抵御此高危风险。

深信服云盾已第一时间从云端自动更新防护规则,云盾用户无需操作,即可轻松、快速防御此高危风险。