Pluck CMS 4.7.10 后台 文件包含+文件上传导致getshell代码分析
p0l4rB 漏洞分析 10203浏览 · 2019-10-18 01:32

0x01 漏洞描述

影响版本:Pluck CMS Pluck CMS <=4.7.10
官网地址:http://www.pluck-cms.org/?file=home
源码下载:https://github.com/pluck-cms/pluck/releases

0x02 漏洞分析

目前最新版本为4.7.10,个人测试github上最旧的4.7.2版本仍然存在该漏洞,框架本身语言选择模块数据注入导致的文件包含漏洞,官方更新版本并没有对这部分代码进行修改,可以认为是全版本通用的。该漏洞是在复现"我怎么这么帅"在先知发表的《Pluck CMS 4.7.10远程代码执行漏洞分析》之余审计其他代码发现的,在此致谢。

v4.7.1分析
从入口文件admin.php查看:

查看language.php,满足指定的文件存在,并传入的cont1参数和原本设置的$langpref参数不等,进入save_language($cont1)。

调用save_file方法。

由于只有一个数据,直接182写入php文件。

至此,langpref的值变成可控值,这个值对应的文件,用于控制网站的语言选择,会自动被全局php文件包含。可以包含上传功能点上传的图种文件解析其中的一句话导致getshell。文件上传功能点使用白名单,但是没有进行重命名,所以路径可以简单猜解。

0x03 漏洞复现

文件上传一个可以写一句话木马的php图种。

上述参数保存于php文件:
\data\settings\langpref.php

由于该参数是网站语言控制的php文件,访问任意网页,包含langpref对应的文件。

访问生成的php一句话木马。

3 条评论
某人
表情
可输入 255
p0l4rB
2019-11-01 01:49 0 回复

@adda**** 之前有事,今天才看到非常抱歉。 我测试了4.7.3,也是可以写入。如果是无法写入的话,猜测可能的问题是这个参数写入的条件是写入文件必须在是存在的(这个在上文中提到),我测试的数据包的那个图种是放在根目录下的。你可以检测一下你的/images/wphp.jpg文件是否存在,并将值改为../../../images/wphp.jpg。


svenbeast
2019-10-28 03:05 0 回复

请问师傅知道这种cms,cnvd给证书吗,需要10个案例吗


adda****
2019-10-24 02:34 0 回复

为啥4.7.3版本language=../../../wphp.jpg写不到langpref.php里面去?