phpcms2008远程代码执行漏洞

近期发现PHPCMS2008存在代码注入漏洞(CVE-2018-19127),攻击者可未经授权写入网站文件,威胁等级高。漏洞涉及type.php中extract函数的不当使用,导致template变量被恶意控制,进而通过template_compile函数写入任意代码。厂商已发布更新修复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

image.png

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

image.png

template函数定义在global.func.php

image.png

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:

https://github.com/ab1gale/phpcms-2008-CVE-2018-19127

http://cve.mitre.org/cgi-bin/cvename.cgi?name=2018-19127

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值