博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
phpcms2008远程代码执行漏洞
阅读量:6696 次
发布时间:2019-06-25

本文共 1139 字,大约阅读时间需要 3 分钟。

描述:

近日,互联网爆出PHPCMS2008代码注入漏洞(CVE-2018-19127)。攻击者利用该漏洞,可在未授权的情况下实现对网站文件的写入。该漏洞危害程度为高危(High)。目前,漏洞利用原理已公开,厂商已发布新版本修复此漏洞。

影响范围:

PHPCMS2008 sp4及以下版本

POC github地址:

漏洞分析:

在type.php中:

包含/include/common.inc.php 其作用是对$_GET,$_POST等全局变量进行注册。

extract函数大家都明白,将数组的项注册为变量。可以对任意变量进行注册。

在type.php第30行调用template函数

template函数定义在global.func.php

image.pngimage.png

$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

image.png

在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。

image.png

总结一下:

type.php 包含common.inc.php 任意变量注册-》$template变量可控->template函数变量$template可控->template_compile函数变量$template可控-》file_put_contents函数由$template影响两个参数变量可控,借助php此函数解析文件特性,将一句话写入文件。

漏洞修复:

升级至最新版本

REFERECE:

转载地址:http://pdvoo.baihongyu.com/

你可能感兴趣的文章
浏览器标签显式网页logo
查看>>
[emuch.net]MatrixComputations(1-6)
查看>>
Latex
查看>>
Android学习笔记(八)——四种基本布局
查看>>
爬虫--Scrapy框架的基本使用
查看>>
(最小生成树) Building a Space Station -- POJ -- 2031
查看>>
maven常用技巧
查看>>
Luogu_2876_[USACO07JAN]解决问题Problem Solving
查看>>
C#多态问题
查看>>
如何选择梯度下降法中的学习速率α(Gradient Descent Learning Rate Alpha)
查看>>
Linux shell中运行命令后加上字符“&”的作用
查看>>
Redis----windows下的常用命令
查看>>
python-递归函数
查看>>
执行sudo pip3 ...报错 Traceback (most recent call last): File "/usr/bin/pip3", line 9, in <module> ...
查看>>
白底黑字!Android浅色状态栏黑色字体模式(另)
查看>>
Docker以https访问Harbor私有仓库(二)
查看>>
Centos7安装redis
查看>>
股票自动化交易 设想
查看>>
Linux之shell脚本for、while、case语句的高级用法
查看>>
mydumper linux mysql 备份利器
查看>>