​Discuz​!ML 3.x恣意代码实行毛病分析



起首附上米斯特安全大佬们文章的链接,刚开始有些东西我没看的太懂,于是我就再添了点东西,盼望像我一样的小白也能看懂。

毛病范例:代码实行毛病

影响体系及版本:Discuz!ML V3.2-3.4

毛病缘故原由:Discuz!ML 体系对cookie中的l吸收的language参数内容未过滤,导致字符串拼接,从而实行php代码。

二、毛病分析

根据米斯特大佬们提供的报错界面,我对此中的三个报错点逐一举行了分析,三个报错点如下图所示(另有米斯特大佬们的水印)。

2.1 报错点一分析

发现起首是portal.php函数堕落,把这张图放大看,发现是对cookie中的language参数举行拼接而导致的报错,根据这个参数的语义判定应该是调用语言模板的时间由于找不到相应的模板而发生的错误,那么先定位portal.php报错的第35行,该文件路径:

紧接着定位libfile函数,文件加载路径函数。

函数先容:

libfile($libname, $folder = ''),包罗2个参数:$libname 和 $folder,该函数读取source目次下的$folder子目次作为底子部门。

比方 require_once libfile('function','plugin/test/');现实为 require_once/source/plugin/test/function.php
libfile函数源代码如下图所示:

DISCUZ_ROOT为界说网站根目次的常量,realpath函数为返谢绝对路径函数,到此处第一个报错就已经分析完毕,缘故原由是体系由于找不到一个php文件而报的错。

似乎第一个错误没有什么用,接着开始分析第二个错误。

2.2 报错点二分析

照旧先根据错误定位到引用函数文件,文件路径source/module/portal/portalindex.php,然后定位到源函数地点的文件,引用的地方好定位,位置在/source/function/functioncore.php,直接上图

然后这个函数写的还贼长,哎,没得办法,这个时间只能靠运气了,搏一搏,单车变摩托,起首百度,这个函数的作用也就是个调用模板的函数。

然而这个函数写了160行代码,找个大表哥的写的代码解释吧,先扔个参考链接http://www.discuz.net/thread-2702143-1-1.html。

此时我发现了思绪有些繁琐,然后就去找第三个错误的提示内容,为了找到是那里出了题目,我把这段代码放到了txt文件中,根据第三个错误提示的信息开始了全文搜刮,终于,根据关键字tpl.php值搜刮到一处与language这个函数语义有关的东西DISCUZ_LANG。

既然是语言参数出了题目,照旧个常量,那就去找找常量界说的地方,全局搜DISCUZLANG,跟踪到/source/class/discuz/discuzapplication.php

可以看到,将$lng的值给了DISCUZ_LANG,追踪$lng在那边界说,全局搜刮$lng,找到了界说$lng的地方(图中第一个箭头)

到此为止,又出现个var,这是个啥,我只知道var[‘cookie’][‘language’]的意思就是cookie中的language的值。

以上可以分析出,从获取language到DISCUZ_LANG拿到值的过程中,并没有对其举行过滤。

那么如今必须确定报错题目是怎么出现的了,看下图:

出现了如许的代码,直接拼接,然后RCE

$cachefile ='./data/template/'.DISCUZ_LANG.'_'.(defined('STYLEID')?STYLEID.'_':'_').$templateid.'_'.str_replace('/', '_', $file).'.tpl.php';

拼接单引号和’.phpinfo.’

'./data/template/'.'.phpinfo.'.'_'.(defined('STYLEID')?STYLEID.'_':'_').$templateid.'_'.str_replace('/', '_', $file).'.tpl.php';

按理来说可以RCE

总结下大概流程从cookie中获取了language的值,然后给了$lng,接着$lng又给了DISCUZ_LANG,体系通过template函数调用模板文件,template函数实行,实行到$cachefile的时间,实行构造的代码。

三、毛病复现

访问站点www.***.com/forum.php,革新页面抓包

在language参数处’.phpinfo.’:

返回内容:

复现乐成。

看起来复现大佬们的毛病照旧挺故意思的,开心。

出色保举


鲜花

握手

雷人

路过

鸡蛋
粉丝0 阅读779 回复0
上一篇:
怎样及时监控提示​Discuz​论坛最新帖子?发布时间:2019-09-26
下一篇:
​Discuz​!开源体系怎样防御CC攻击?发布时间:2019-09-26

精彩阅读

推荐视频

阅读排行榜

专访

网站简介

球球发,是一家 Discuz! 商业插件、风格模板、网站源码、 Discuz!运营维护技术等于一体的交流分享网站,全站95%的资源都是免费下载,对于资源我们是每天更新,每个亲测资源最新最全---球球发(如果我们有侵犯了您权益的资源请联系我们删除