phpcms2008漏洞 远程代码写入缓存漏洞利用



        SINE安全公司在对phpcms2008网站代码进行安全检测与审计的时候发现该phpcms存在远

程代码写入缓存文件的一个SQL注入漏洞,该phpcms漏洞危害较大,可以导致
网站被黑,以及

服务器遭受黑客的攻击,关于这次发现的phpcms漏洞细节以及如
何利用提权我们来详细剖析。
 
 
phpcms2008是国内深受站长建站使用的一个内容CMS管理系统,phpcms的开源话,免费,动

态,静态生成,API接口,模板免费下载,自定义内容设计,可提供程序
的二次开发与设计,大

大方便了整个互联网站长的建站使用与优化。整个phpcms采
用PHP+Mysql数据库作为架构,稳

定,并发高,承载量大。

 
 
phpcms2008漏洞详情
 
 
在对代码的安全检测与审计当中,发现type.php文件代码存在漏洞,代码如下:
 
<?php
require dirname(__FILE__).'/include/common.inc.php';
...
if(empty($template)) $template = 'type';
...
include template('phpcms', $template);
...
?>



以上代码if(empty($template)) 在进行变量定义的时候可以跟进来看下,通过
extract进行

变量的声明与注册,如果当前的注册已经有了,就不会覆盖当前已有
的声明,导致可以

变量伪造与注入。


我们再来跟踪该代码找到template函数,看到调用到了include目录下的global.func.php文

件,该代码里的function template会对传递过来的定义值进行判断,默认TPL_REFRESH

是为1的参数值,也就是说自动开启了模板缓存功能。当需
要更新缓存的时候就会先判断

有没有变量注册,如果有就会进行更新缓存。

 
 
该漏洞利用的就是缓存的更新,将网站木马代码插入到缓存文件当中去。可以看出$template

没有进行过滤就可以直接写入到缓存模板中,我们可以指定TAG内容,
post提交过去,如下

代码:

 
 
我们在自己的本地电脑搭建了一套phpcms2008系统的环境,进行漏洞测试,提交post参数

过去,我们看下本地的漏洞结果,可以执行phpinfo代码。也可以插入一
句话木马后门进行

上传webshell。


 
phpcms漏洞修复与安全建议
 
目前phpcms官方已经修复该漏洞,请各大网站运营者尽快升级phpcms2008到最新版本,有

些二次开发的网站可以针对缓存目录进行安全限制,禁止PHP脚本文件的执
行,data,cache

_template目录进行安全加固部署。
分享: