一、漏洞描述
该漏洞存在discuz ml(多国语言版)中,cookie中的language可控并且没有严格过滤,导致可以远程代码执行。
二、漏洞影响版本
Discuz! ML V3.2
Discuz! ML V3.3
Discuz! ML V3.4
三、漏洞环境搭建
- 官网下载Discuz! ML V3.4,下载地址: http://discuz.ml/download
- 将压缩包解压到phpstudy网站根目录,浏览器访问upload目录开始安装
- 然后就是一直点击下一步就可以了,直到完成安装
四、漏洞复现
- 漏洞存在的位置/upload/source/module/portal/portal_index.php,使用template函数处理’diy:portal/index’,然后使用include_once包含
- 跟进template函数,发现把DISCUZ_LANG函数拼接成为一个缓存文件名,然后又返回了缓存文件名
- 跟进DISCUZ_LANG函数,发现从cookie中取language的值给$lng
- 继续浏览代码,发现把$lng的值赋给DISCUZ_LANG了