11月4日,阿里云安全首次捕获PHPCMS 2008版本的/type.php远程GetShell 0day利用攻击,攻击者可以利用该漏洞远程植入webshell,导致文件篡改、数据泄漏、服务器被远程控制等一系列严重问题。建议受影响用户尽快升级到最新版本修复。

———————
PHPCMS网站内容管理系统是国内主流CMS系统之一,同时也是一个开源的PHP开发框架。

PHPCMS最早于2008年推出,最新版已出到v9.6.3,但由于稳定、灵活、开源的特性,时至今日,PHPCMS2008版本仍被许多网站所使用。

漏洞细节

当攻击者向安装有PHPCMS 2008的网站发送uri为如下文本的payload

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

那么@unlink(_FILE_);assert($_POST[1]);这句恶意php指令将被写入网站的/cache_template/rss.tpl.php文件。

漏洞原理

该漏洞源于PHPCMS 2008源码中的/type.php文件。该文件包含如下代码:

if(empty($template)) $template = 'type';
...
include template('phpcms', $template);

这里template变量是用户能够通过传入参数控制的,同时可以看到该变量之后会被传入template()方法。而template()方法在/include/global.func.php文件中定义,包含如下代码:
template_compile($module, $template, $istag);

不难看出,这里会继续调用/include/template.func.php中的template_compile():

function 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){ global $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);...
}

在这个方法中,template变量同时被用于compiledtplfile变量中文件路径的生成,和content变量中文件内容的生成。

而前文所述的攻击payload将template变量被设置为如下的值
tag_(){};@unlink(_FILE_);assert($_POST[1]);{//../rss

所以在template_compile()方法中,调用file_put_contents()函数时的第一个参数就被写成了data/cache_template/phpcms_tag_(){};@unlink(_FILE_);assert($_POST[1]);{//../rss.tpl.php,这将被php解析成data/cache_template/rss.tpl.php

最终,@unlink(_FILE_);assert($_POST[1]);将被写入该文件。

影响范围

虽然距离PHPCMS2008版本的推出已经10年,但仍有不少网站正在使用PHPCMS2008,包括政府、企业的网站;根据Fofa网络空间安全搜索引擎的全网精确搜索结果显示,还有近200个使用PHPCMS2008版本的网站;而如果使用模糊匹配对网站进行识别,匹配结果更达上万个。

通过利用该漏洞,攻击者在向路径可控的文件写入恶意脚本代码后,后续将能够向该文件发送webshell指令,在服务器上执行任意代码,因此该代码注入漏洞的影响较大。

安全建议

手动修复
临时解决可以在/type.php文件中对template变量进行过滤,避免用户输入的含有"("、"{"等符号的内容混入,并被当做路径和脚本内容处理。

但由于PHPCMS2008版本过旧,用户应尽量升级到最新版本的PHPCMS,才能够更好地保障安全。

安全加固
•云防火墙已支持对该类漏洞的入侵防御,开启云防火墙IPS拦截模式和虚拟补丁功能,用户即使不自行进行修复,也依然能够进行防御和拦截。
•购买安全管家服务,您将能够在阿里云安全专家指导下进行安全加固及优化,避免系统受到该漏洞及后续其他漏洞影响。

原文链接
本文为云栖社区原创内容,未经允许不得转载。

CVE漏洞—PHPCMS2008 /type.php代码注入高危漏洞预警相关推荐

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

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

  2. Windows RDP远程代码执行高危漏洞加固指南

    漏洞信息 序号 漏洞类型 风险等级 漏洞主机( 操作系统及版本) 1 Windows RDP远程代码执行高危漏洞 高 Windows     2. 漏洞加固实施 漏洞1:Windows RDP远程代码 ...

  3. phpcms2008网站漏洞如何修复 远程代码写入缓存漏洞利用

    SINE安全公司在对phpcms2008网站代码进行安全检测与审计的时候发现该phpcms存在远程代码写入缓存文件的一个SQL注入漏洞,该phpcms漏洞危害较大,可以导致网站被黑,以及服务器遭受黑客 ...

  4. Apache Log4j2 远程代码执行高危漏洞 解决方案

    新闻:https://view.inews.qq.com/a/20211210A05KTY00 博主其他文章 Log4j2 高危漏洞分析 简介: Apache Log4j2是一款优秀的Java日志框架 ...

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

    漏洞介绍 fastjson在1.2.24以及之前版本近日曝出代码执行漏洞,当用户提交一个精心构造的恶意的序列化数据到服务器端时,fastjson在反序列化时存在漏洞,可导致远程任意代码执行漏洞. 风险 ...

  6. 西门子修复热门 CAD 库中的多个代码执行高危漏洞

     聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士 本周二,西门子发布安全公告,通知客户称其 Solid Edge 产品受多个高危漏洞影响,这些漏洞是由很多其它组织机构都在使用的第四方软件引 ...

  7. thinkphp5运行原理_ThinkPHP5.1~5.2全版本远程代码执行高危漏洞预警

    漏洞综述 关于ThinkPHP ThinkPHP是一个快速.兼容而且简单的轻量级国产PHP开发框架,其借鉴了国外很多优秀的框架和模式,包括使用面向对象的开发结构和MVC模式,融合了Struts的思想和 ...

  8. 谷歌浏览器修复_谷歌发布 Chrome 紧急补丁 修复可执行任意代码的高危漏洞

    稿源:http://cnBeta.COM 面向 Chrome 用户,谷歌今天发布了一项紧急安全更新,修复了可以执行任意代码的漏洞.谷歌正向 Windows.macOS 和 GNU/Linux 平台上的 ...

  9. 网站漏洞修复方案防止SQL注入攻击漏洞

    SQL注入漏洞在网站漏洞里面属于高危漏洞,排列在前三,受影响范围较广,像asp..net.PHP.java.等程序语言编写的代码,都存在着sql注入漏洞,那么如何检测网站存在sql注入漏洞? SQL注 ...

最新文章

  1. 华为:对部分顶尖学生实行年薪制 最高200万元
  2. LVS学习笔记--概念
  3. BLOOMBERG how to start?
  4. gensim中文处理
  5. 重构,改善既有代码的设计--第八章感悟
  6. 设置dns_2019让你的网速飞起来,你需要……设置正确DNS服务篇
  7. 每天进步一点点《ML - 正则化代价函数》
  8. debian查询端口进程_centos linux系统配置查询
  9. python error loading package_Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决...
  10. golang mysql条件查询_mysql – 将变量传递给GoLang查询
  11. Linux 定时任务详解
  12. 计算机温度控制系统论文,基于单片机的温度采集控制系统
  13. UML建模--用例图
  14. 论文笔记——DISCO:网络嵌入和深度学习联合解决影响力最大化(IM)问题
  15. 深度强化学习算法研究中的常用对比试验及作图技巧
  16. Burg法求解AR(p)模型参数(三)Levinson递推公式
  17. Netty 学习笔记(已完结)
  18. GitLab系列3 Unicorn
  19. 《从点子到产品:产品经理的价值观与方法论》读后感
  20. python提取微信聊天语音_利用Python进行微信,QQ的语音识别!内部技术的延伸版!...

热门文章

  1. 计算机基础知识的重点,计算机基础知识重点
  2. android 左移动画_android旋转动画和平移动画详解,补充说一下如果制作gif动画放到csdn博客上...
  3. 【学习笔记】JAVA基础——异常处理部分
  4. 天津科技大学计算机合资办学,天津科技大学计算机科学与信息工程学院介绍
  5. 自学java编译老是出错_为什么按照书上的代码,编译老是出错?
  6. vim函数跳转 php,求助!! vim-gvim中如何让其显示函数及其参数!!
  7. while的用法java_java中的while循环和do while循环
  8. 数据库表名大小写_某教程学习笔记(一):09、MYSQL数据库漏洞
  9. 福建高职计算机知识点,2013福建高职单招 计算机类专业 知识试题
  10. 柏林噪声双线性插值初步了解(js)