近期咱们SINE安全在对discuz x3.4进行全面的网站渗透测试的时候,发现discuz多国语言版存在远程代码执行漏洞,该漏洞可致使论坛被直接上传webshell,直接远程获取管理员权限,linux服务器能够直接执行系统命令,危害性较大,关于该discuz漏洞的详情,咱们来详细的分析看下。php
discuz漏洞影响范围:discuz x3.4 discuz x3.3 discuz x3.2,版本都受该网站漏洞的影响,漏洞产生的缘由是在source目录下function文件夹里function_core.php代码里的cookies与语言language参数值并无详细的进行安全过滤与检测,致使能够插入恶意的代码到数据库,并远程执行恶意代码,可获取webshell权限。linux
discuz漏洞分析web
咱们来看下刚才产生漏洞的代码,在第535行往下看,有一段代码是这样写的,默认网站系统将缓存数据存储在data文件夹里的template目录中,缓存文件名的命名是由前面的discuz_lang参数进行控制来命令的,漏洞产生的缘由就在这里。那这个discuz_lang参数的值是历来获取来的呢? 咱们跟进分析网站代码,能够看到是从language语言这一变量里去获取的值,也就是说,咱们要利用这个网站漏洞,首先要去改变这个language的值,将恶意代码插入到这个值当中去,POC代码以下:shell
post数据到论坛的forum.php页面,将post数据改成:Z3T2_2132_language=en'.phpinfo().';便可执行php语句,整个漏洞的分析,咱们能够看出discuz官方并无对post数据里的cookies值进行安全过滤与判断,致使能够直接写入language里恶意代码并远程执行,能够构造一句话代码,直接获取webshell。数据库
网站漏洞修复与安全防御方案缓存
对discuz的版本进行全面的升级,在language参数值中进行全面的安全过滤,限制逗号,以及闭合语句的执行,还有\斜杠都一些特殊恶意代码进行拦截,必要的话对其进行转义,若是对代码不是太熟悉的话,也能够找专业的网站安全公司来进行漏洞修复,国内也就SINE安全公司,绿盟,启明星辰比较专业。再一个对discuz目录的权限进行安全分配,限制data目录的脚本执行权限,防止PHP脚本的运行,最重要的就是作好网站的安全防御。安全