phpcms2008远程代码执行漏洞的分析及如何修复

发布时间:2021-10-11 13:39:32 作者:柒染
来源:亿速云 阅读:125

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等全局变量进行注册。

phpcms2008远程代码执行漏洞的分析及如何修复

extract函数大家都明白,将数组的项注册为变量。可以对任意变量进行注册。
在type.php第30行调用template函数

phpcms2008远程代码执行漏洞的分析及如何修复

template函数定义在global.func.php

phpcms2008远程代码执行漏洞的分析及如何修复

phpcms2008远程代码执行漏洞的分析及如何修复phpcms2008远程代码执行漏洞的分析及如何修复

$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

phpcms2008远程代码执行漏洞的分析及如何修复

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

phpcms2008远程代码执行漏洞的分析及如何修复

总结一下:

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

漏洞修复:

升级至最新版本

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

推荐阅读:
  1. OrientDB远程代码执行漏洞利用与分析
  2. Windows远程代码执行漏洞及Microsoft Excel远程代码执行漏洞的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

phpcms

上一篇:mysql如何实现自连接查询

下一篇:如何用JavaScript实现下拉列表选择框

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》