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

最新文章

  1. Java Web的传值汇总(含JavaBean)
  2. eclipse中的 Compiler compliance level含义
  3. RedHat 6.7 Enterprise x64环境下使用RHCS部署Oracle 11g R2双机HA
  4. mybatis框架中分页的实现
  5. mac jdk环境变量
  6. 合唱队形2(洛谷U5874)
  7. 全浏览器收藏网站javascript
  8. 【转】URL的井号
  9. visual studio snippets风格
  10. 在iphone上安装多个微信 【微信营销必备】
  11. 微信支付 APP 支付方式的服务器端处理程序
  12. Projective Texture的原理与实现
  13. Linux下文件轻松比对,自由开源的比较软件
  14. RabbitMQ集群搭建和使用
  15. [LeetCode] 6. Z 字形变换
  16. mybatis的collection查询问题以及使用原生解决方案的结果
  17. MyBatis笔记----报错Exception in thread "main" org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ij34.model.UserMapper.selectUser
  18. java io系列20之 PipedReader和PipedWriter
  19. 备份与还原ORACLE数据库(通过CMD命令执行)
  20. TP无限回复

热门文章

  1. UltraEdit注册机 及使用方法详解
  2. Centos7源码安装mariadb
  3. ****微信小程序架构解析
  4. golang 使用pprof进行性能调优
  5. 路漫漫其修远兮,吾将上下而求索--2019OKR规划
  6. Selenium自动化测试之元素定位
  7. 【JavaScript】$.extend使用心得及源码研究
  8. wordpress网站迁移
  9. Linux系统下配置网络、JAVA环境,配置tomcat,mysql
  10. 有意思的算法题:有10个文件,每个文件大概有10G,求里面最大的100个数;