phpcms2008远程代码执行漏洞
phpcms2008远程代码执行漏洞
描述:
近日,互联网爆出PHPCMS2008代码注入漏洞(CVE-2018-19127)。攻击者利用该漏洞,可在未授权的情况下实现对网站文件的写入。该漏洞危害程度为高危(High)。目前,漏洞利用原理已公开,厂商已发布新版本修复此漏洞。
影响范围:
PHPCMS2008 sp4及以下版本
POC github地址:
https://github.com/ab1gale/phpcms-2008-CVE-2018-19127
漏洞分析:
在type.php中:
包含/include/common.inc.php 其作用是对$_GET,$_POST等全局变量进行注册。
extract函数大家都明白,将数组的项注册为变量。可以对任意变量进行注册。
在type.php第30行调用template函数
template函数定义在global.func.php
$template变量在这里是完全可控的,且默认开启模版缓存自动刷新。当template变量输入为template=tag_(){};@unlink(FILE);assert($_POST[1]);{//../rss时,$compiledtplfile=”data/cache_template/phpcmstag(){};@unlink(FILE);assert($_POST[1]);{//../rss.tpl.php” .此时,可自然进入判断 ,调用template_compile函数,次函数定义在include/template.func.php
在templatecompile函数中,$template变量是我们可控的,而$content变量当我们的输入为”template=tag(){};@unlink(FILE);assert($_POST[1]);{//../rss”自然会选择前者,而content内容中$template变量可控,最后file_put_contents函数写入任意代码,需要注意的是,file_put_contents路径为data/cache_template/phpcmstag(){};@unlink(FILE);assert($_POST[1]);
{//../rss.tpl.php时,php会将其路径解析为data/cache_template/rss.tpl.php。
总结一下:
type.php 包含common.inc.php 任意变量注册-》$template变量可控->template函数变量$template可控->template_compile函数变量$template可控-》file_put_contents函数由$template影响两个参数变量可控,借助php此函数解析文件特性,将一句话写入文件。
漏洞修复:
升级至最新版本
REFERECE:
https://github.com/ab1gale/phpcms-2008-CVE-2018-19127
http://cve.mitre.org/cgi-bin/cvename.cgi?name=2018-19127
最新文章
- Java Web的传值汇总(含JavaBean)
- eclipse中的 Compiler compliance level含义
- RedHat 6.7 Enterprise x64环境下使用RHCS部署Oracle 11g R2双机HA
- mybatis框架中分页的实现
- mac jdk环境变量
- 合唱队形2(洛谷U5874)
- 全浏览器收藏网站javascript
- 【转】URL的井号
- visual studio snippets风格
- 在iphone上安装多个微信 【微信营销必备】
- 微信支付 APP 支付方式的服务器端处理程序
- Projective Texture的原理与实现
- Linux下文件轻松比对,自由开源的比较软件
- RabbitMQ集群搭建和使用
- [LeetCode] 6. Z 字形变换
- mybatis的collection查询问题以及使用原生解决方案的结果
- MyBatis笔记----报错Exception in thread ";main"; org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ij34.model.UserMapper.selectUser
- java io系列20之 PipedReader和PipedWriter
- 备份与还原ORACLE数据库(通过CMD命令执行)
- TP无限回复