资源交易网

 找回密码
 免费注册
查看: 54|回复: 0

Discuz!X.3.4 ML任意代码执行漏洞修复(discuz多国语言版)

[复制链接]
发表于 2026-2-23 15:19:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转资源交易网。

您需要 登录 才可以下载或查看,没有帐号?免费注册

x
106.jpg

0X1 漏洞描述

2019年7月11日,网络上出现了一个Discuz!ML远程代码执行漏洞的PoC,研究员验证对discuz x3.4进行全面的网站渗透测试的时候,发现discuz多国语言版存在远程代码执行漏洞,该漏洞可导致论坛被直接上传webshell,直接远程获取管理员权限,linux服务器可以直接执行系统命令,危害性较大,关于该discuz漏洞的详情,我们来详细的分析看下。攻击者能够利用该漏洞在请求流量的cookie字段中(language参数)插入任意代码,执行任意代码,从而实现完全远程接管整个服务器的目的,该漏洞利用方式简单,危害性较大。漏洞影响范围包括如下版本。
Discuz ML! V3.X存在代码注入漏洞,
攻击者通过精心构建的请求报文可以直接执行恶意的PHP代码,
进一步可获取整个网站的服务器权限。

漏洞影响版本:

Discuz!ML v.3.4,
Discuz!ML v.3.2,
Discuz!ML v.3.3 codersclub.org的产品

Discuz!ML是一个由CodersClub.org创建的多语言,集成,功能齐全的开源网络平台,

用于构建像“社交网络”这样的互联网社区。使用这些软件创建的数百个论坛包括v3.2,v3.3,v3.4。

1.3如何区分Discuz!ML网站

通常,这些站点包含以下类型的页脚或站点的左下侧。

Discuz! ML v.3.4、Discuz! ML v.3.3、Discuz! ML v.3.2
源码下载链接:https://bitbucket.org/vot/discuz.ml/downloads/

0X2 漏洞分析!

根据公告定位文件source/module/portal/portal_index.php第32行

查看问题函数上方查看定义函数以及关联文件的位置,可以看到template函数在/source/function/function_core.php中,继续跟进

问题代码如下所示。

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

程序将缓存文件写在了/data/template/目录下,文件名由DISCUZ_LANG等多个变量组成,问题就出在这儿了,看看DISCUZ_LANG的值是哪儿获取来的:

可以看到从程序全部变量$_G[‘config’][‘output’][‘language’]中获取了该值。继续跟进看看该值可以定位到/source/class/discuz/discuz_application.php:

在304行,系统通过Cookie获取了语言的值,并在341行定义了前面要找的DISCUZ_LANG,值为Cookie中获取到的lng。可以看到整个过程没有任何的过滤。整个流程即就是:外部参数‘ lng。可以看到整个过程没有任何的过滤。整个流程即就是:外部参数`lng。可以看到整个过程没有任何的过滤。整个流程即就是:外部参数‘lng(即language语言)可控,导致template函数生成的临时模板文件名可操纵,插入自己的代码,最终include_once`包含一下最终导致了代码注入。那这里可以搜一下其他的可利用点,全局查找:

大约有60多个点可以用的。

0X3 漏洞利用

访问论坛主页,在Cookie的language字段值后面拼接php代码:

‘.phpinfo().’

执行命令获得管理员权限:

0X4 漏洞修复
对discuz的版本进行全面的升级,在language参数值中进行全面的安全过滤,限制逗号,以及闭合语句的执行,还有\斜杠都一些特殊恶意代码进行拦截,必要的话对其进行转义,如果对代码不是太熟悉的话,也可以找专业的网站安全公司来进行漏洞修复,国内也就SINE安全公司,绿盟,启明星辰比较专业。再一个对discuz目录的权限进行安全分配,限制data目录的脚本执行权限,防止PHP脚本的运行,最重要的就是做好网站的安全防护。

打开 source/class/discuz/discuz_application.php
找到

if(!$lng) {

修改为

if(!preg_match("#^[\w]+$#i", $lng)){
        $lng = '';
}
if(!$lng) {

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

//-->
资源交易网:版权所有
资源交易网是互联网上传和各网友发布的资源
注:资源交易网如有信息侵犯了您的权益,请联系客服QQ:503579210及时删除。福尊网将乐意接受您的意见,并及时作出修改。
免责声明:资源交易网所有内容仅代表发表者个人观点,不代表资源交易网立场。资源交易网拒绝任何人以任何形式在本网发表与中华人民共和国法律相抵触的言论!
返回顶部