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目录进行安全加固部署,对网站上的漏洞进行修复,或者是对网站安全防护参数进行重新设置,使他符合当时的网站环境。如果不懂如何修复网站漏洞,也可以找专业的网站安全公司来处理,国内也就Sinesafe和绿盟、启明星辰等安全公司比较专业.

phpcms2008网站漏洞如何修复 远程代码写入缓存漏洞利用的更多相关文章

  1. Fastjson 爆出远程代码执行高危漏洞,更新版本已修复

    fastjson近日曝出代码执行漏洞,恶意用户可利用此漏洞进行远程代码执行,入侵服务器,漏洞评级为“高危”. 基本介绍fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器 ...

  2. Joomla 3.0.0 -3.4.6远程代码执行(RCE)漏洞复现

    Joomla 3.0.0 -3.4.6远程代码执行(RCE)漏洞复现 一.漏洞描述 Joomla是一套内容管理系统,是使用PHP语言加上MYSQL数据库所开发的软件系统,最新版本为3.9.12,官网: ...

  3. IE浏览器远程代码执行高危漏洞(CVE-2019-1367)

    IE浏览器远程代码执行高危漏洞(CVE-2019-1367)加固遇到的问题 一.背景介绍 Internet Explorer,是微软公司推出的一款网页浏览器.用户量极大.9月23日微软紧急发布安全更新 ...

  4. Free MP3 CD Ripper_缓冲区溢出远程代码执行_CVE-2019-9766漏洞复现

    Free MP3 CD Ripper_缓冲区溢出远程代码执行_CVE-2019-9766漏洞复现 一.漏洞描述 Free MP3 CD Ripper是一款音频格式转换器.Free MP3 CD Rip ...

  5. WebLogic 任意文件上传远程代码执行_CVE-2018-2894漏洞复现

    WebLogic 任意文件上传远程代码执行_CVE-2018-2894漏洞复现 一.漏洞描述 Weblogic管理端未授权的两个页面存在任意上传getshell漏洞,可直接获取权限.Oracle 7月 ...

  6. windows RDP远程代码执行_CVE-2019-0708漏洞复现

    windows RDP远程代码执行_CVE-2019-0708漏洞复现 一.漏洞概述 2019年5月14日微软官方发布安全补丁,修复了windows远程桌面服务的远程代码执行漏洞,该漏洞影响了某些旧版 ...

  7. Apache Druid 远程代码执行 CVE-2021-25646 漏洞复现

    Apache Druid 远程代码执行 CVE-2021-25646 漏洞复现 前言 Apache Druid 是用Java编写的面向列的开源分布式数据存储,旨在快速获取大量事件数据,并在数据之上提供 ...

  8. Adboe Flash远程代码执行_CVE-2018-4878漏洞复现

    Adboe Flash远程代码执行_CVE-2018-4878漏洞复现 一.漏洞描述 该漏洞可针对windows用户发起定向攻击.攻击者可以诱导用户打开包含恶意Flash代码文件的Microsoft ...

  9. Tomcat CGIServlet enableCmdLineArguments远程代码执行_CVE-2019-0232漏洞复现

    Tomcat CGIServlet enableCmdLineArguments远程代码执行_CVE-2019-0232漏洞复现 一.漏洞描述 该漏洞是由于tomcat CGI将命令行参数传递给Win ...

随机推荐

  1. 获取select下拉框的value以及文本内容

    select下拉框在项目开发中是经常用到的,特别是在联级菜单方面的应用更为广泛.但是,对于一些初学者来说,如何获取下拉框子节点option的value值和文本内容,还是有一点难度的.其他的就不说了,现 ...

  2. js:正则表达式

    <script type="text/javascript"> function SubmitCk() { var reg = /^([a-zA-Z0-9]+[_|\_ ...

  3. 【Leetcode】【Easy】Valid Sudoku

    Determine if a Sudoku is valid, according to: Sudoku Puzzles - The Rules. The Sudoku board could be ...

  4. js alert 封装 layui

    方式一: var aaa = function(){ function _alert(aa){ layer.msg(aa, { time: 2000, //2s后自动关闭 alert("最高 ...

  5. June 10th 2017 Week 23rd Saturday

    A lot of things, we can be touched, but we can not shed tears. 很多事情,我们可以感动,却不能流泪. Sometimes I was to ...

  6. 确定浏览器是否支持某些DOM模块

    var supportDOM2Core = document.implementation.hasFeature("Core","2.0"); var supp ...

  7. libevent evbuffer参考文章

    https://blog.csdn.net/FreeeLinux/article/details/52799951 http://cache.baiducontent.com/c?m=9d78d513 ...

  8. PHP设计模式——责任链模式

    <?php /** * 责任链模式 * 组织一个对象链处理一个请求,每个处理对象知道自己能处理哪些请求,并把自己不能处理的请求交下一个处理对象 * * 适用场景: * 1.有多个对象可以处理同一 ...

  9. 将 form 参数转换为 json 绑定 datagrid 上

    $.fn.serializeJson=function(){ var serializeObj={}; var array=this.serializeArray(); var str=this.se ...

  10. python 通过 socket 发送文件

    目录结构: client: #!/usr/bin/env python # -*-coding:utf-8 -*- import socket, struct, json download_dir = ...