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

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

缺陷编号:wooyun-2012-013290

漏洞标题:腾讯通RTX企业用户存在渗透风险!

相关厂商:腾讯通RTX企业用户

漏洞作者: 有礼物送上

提交时间:2012-10-13 11:03

修复时间:2012-10-18 11:04

公开时间:2012-10-18 11:04

漏洞类型:敏感信息泄露

危害等级:低

自评Rank:1

漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

腾讯说了没问题,意思就是说欢迎大家去搞,关我毛事。
企业用户还是比较多,哥还是负责,自己还是做一份,请管理员叫给CNCERT处理吧!

详细说明:


完整测试过程:
首先,去官网下载一个完整安装包:
http://rtx.tencent.com/rtx/download/index.shtml

安装服务器端和客户端:

(默认下载是TRX2011版,是否是所有版本有影响,没完全测试,但根据部分实例测试来看,大部分版本都有此问题!)



然后,发现
http://127.0.0.1:8012/userlist.php
可以直接访问到,里面包含所有用户的用户名等信息的json(里面我添加一个存在弱口令的test帐号,以便后面的测试):
为什么会直接就能访问到这个userlist.php了?
不管后面的危害如何,这些重要数据是不是不能对普通用户?


看看源代码(虽然不喜欢看代码,也没有用过php),发现是个比较2的失误:
在RTXServer\WebRoot路径下找到userlist.php文件:


<?php 
header('Content-Type: text/html; charset=utf-8');
//require_once "IPLimit.php";
$connstr = "Driver={Microsoft access Driver (*.mdb)};DBQ=../db/rtxdb.mdb";
$conn = @new COM("ADODB.Connection") or die ("ADO连接失败!");
$conn->Open($connstr);
$rs = @new COM("ADODB.RecordSet");
$sql ="select ID,UserName from Sys_user where AccountState<>1 or AccountState is null order by ID";
$rs->Open($sql,$conn,1,3);
$rs->MoveFirst();
$result = array();
while(!$rs->EOF)
{
$idField = $rs->Fields(0);
$id = $idField->value;
$nameField = $rs->Fields(1);
$name = $nameField->value;

$name = iconv("gb2312","utf-8", $name);
array_push($result, array('id'=>$id,'name'=>$name));
$rs->MoveNext();
}
$rs->close();
//print_r($result);
echo json_encode($result);
?>


第三行代码被注释掉了:
//require_once "IPLimit.php";


那么这个IPLimit.php是干什么的了?看命名就知道了,做ip限制的:


<?php
if (PHP_VERSION>='5')
require_once('domxml-php4-to-php5.php');
$visitorIP = $_SERVER['REMOTE_ADDR'];
$visitorIP = trim($visitorIP);
//$visitorDns = $_SERVER['REMOTE_HOST'];
define("LOCAL_IP_PREFIX", "127.0.0.");
define("IPLIMIT_CONFIGFILE_NAME", "SDKProperty.xml");
define("ELEM_SDKHTTP", "SDKHttp");
define("ELEM_IPLIMIT", "IPLimit");
define("ATTR_LIMITENABLED", "Enabled");
define("ELEM_IP", "IP");
function GetIPLimitConfigFilePath()
{
$path = dirname(__FILE__); // webroot
$path = dirname($path); // RTXServer
$path .= "\\";
$path .= IPLIMIT_CONFIGFILE_NAME;

return $path;
}
function IsVisitorLimited($visitorIP)
{
if (strpos($visitorIP, LOCAL_IP_PREFIX) !== false)
{
return false;
}

$iplimitConfigFilePath = GetIPLimitConfigFilePath();
if (!file_exists($iplimitConfigFilePath))
{
return false;
}

$isLimitEnabled = "0";
$arPermittedIP = array();
GetIPLimitInfo($iplimitConfigFilePath, $isLimitEnabled, $arPermittedIP);

if ($isLimitEnabled == "0")
{
return false;
}

if (in_array($visitorIP, $arPermittedIP, false))
{
return false;
}

return true;
}
function GetIPLimitInfo($iplimitConfigFilePath, &$isLimitEnabled, &$arPermittedIP)
{
$isLimitEnabled = "0";

$dom = domxml_open_file($iplimitConfigFilePath);
if ($dom == null)
{
header("http/1.1 404 domxml_open_file failed!");
exit;
}

$dom_root = $dom->document_element();
if ($dom_root == NULL)
{
header("http/1.1 404 ip limit config file invalid!");
exit;
}

$sdkhttpNode = NULL;
$arPropertyChildNodes = $dom_root->child_nodes();
for ($i = 0; $i < count($arPropertyChildNodes); $i++)
{
if (strcasecmp($arPropertyChildNodes[$i]->node_name(), ELEM_SDKHTTP) == 0)
{
$sdkhttpNode = $arPropertyChildNodes[$i];
break;
}
}

if ($sdkhttpNode != NULL)
{
$arSDKCgiChildNodes = $sdkhttpNode->child_nodes();
foreach ($arSDKCgiChildNodes as $sdkcgiChildNode)
{
if (strcasecmp($sdkcgiChildNode->node_name(), ELEM_IPLIMIT) == 0)
{
$arAttr = $sdkcgiChildNode->attributes();
for ($i = 0; $i < count($arAttr); $i++)
{
if (strcasecmp($arAttr[$i]->name, ATTR_LIMITENABLED) == 0)
{
$isLimitEnabled = $arAttr[$i]->value();
}
}

if ($isLimitEnabled == "1")
{
$arChildNodesIP = $sdkcgiChildNode->child_nodes();
foreach ($arChildNodesIP as $childNodeIP)
{
if (strcasecmp($childNodeIP->node_name(), ELEM_IP) == 0)
{
array_push($arPermittedIP, trim($childNodeIP->get_content()));
}
}
}

break;
}
}
}
}
if (IsVisitorLimited($visitorIP))
{
echo "IP 受限,请联系管理员开放您的 IP";
//header("http/1.1 404 IP limited!");
exit;
}
?>


这里就有个问题了,这与腾讯的说法就矛盾了,如果userlist.php是正常权限,为什么会有这个功能限制了?


如果是代码审计失误造成的就算了;如果是主动注释掉,怕影响用户体验,那这是个最2的功能了,那这样为什么不做管理页面里?各种看不懂!


漏洞证明:

然后使用test,在“查看审核结果”处尝试弱口令:



一般的大企业都是成百上千用户,只要一个存在弱口令,整个公司人员的信息都要暴露等:


在有用户名的情况下,在这个简单登录界面破解一个内网用户密码我想太容易了:



然后是简单配置一下客户端就成功登录了!




然后给点实际案例(除了之前发的一些,我另外又找了些):
110.86.9.189:8012/
rtx.hebstd.gov.cn:8012/
rtx.szvienna.com:8012/
218.75.206.108:8012/
202.91.227.110:8012/
rtx2009.kanion.com:8012/
rtx.sinoma-ncdri.cn:8012/
211.68.208.34:8012/
120.209.176.9:8012/
222.90.72.34:8012/
rtx.at-express.com:8012/
218.62.80.218:8012/
61.156.217.52:8012/
118.112.186.35:8012/
61.175.218.170:8012/
rtx.pkuyy.com:8012/
rtx.jianxin.com:8012/
rtx.cometgroup.com.cn:8012/
hzng.com.cn:8012/
124.117.253.19:8012/
211.81.31.61:8012/
rtx.enweixi.com:8012/
221.212.46.188:8012/
218.56.106.149:8012/
125.43.85.116:8012/
58.128.148.10:8012/
www.pearlcoin.cn:8012/
202.113.48.145:8012/
218.20.201.30:8012/
222.89.168.62:8012/
rtx.caams.org.cn:8012/
218.29.37.196:8012/
219.141.70.238:8012/
cszyz.zpjy.net:8012/
www.ynxt56.com:8012/
tgzdh.tangsteel.com:92/
www.pssyy.cn:8012/
www.76tzx.com:8012/
foisongroup.com:8012/
www.hbaxle.com:8012/
58.248.49.93:8012/
www.nbqinyuanoa.com:8012/
www.gaokegroup.com:8012/
sales.midea.com.cn:8012/
rtxc.satrip.com:8012/
rtx.dycoal.cn:8012/
218.90.212.84:8012/
60.191.40.4:8012/
sucai.nxyc2z.com:8012/
www.kt10000.com:8012/
qq.huiyuan.com.cn:8012/


没有一个个测试,有些可能限制了,如:登录8000端口更换了等!


下面是成功入侵的案例(123456密码测试):
rtx10.ougz.com.cn:8012/userlist.php
8442 123456
http://rtx.dycoal.cn:8012/userlist.php
zsx 123456
http://rtx.evoc.cn:8012/userlist.php
sz2054 123456
http://www.gaokegroup.com:8012/userlist.php
3102 123456


就以高科集团为例(在客户端填好上面的地址,默认8000端口):



这样就能获得公司领导的联系方式了:



还可以使用你们做安全的专业术语,伪造他人与公司财务MM视频传情:




修复方案:

过程算完整了,真是影响哥周末的心情(这么明显的信息泄露,是真2吗?)!

版权声明:转载请注明来源 有礼物送上@乌云


漏洞回应

厂商回应:

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

忽略时间:2012-10-18 11:04

厂商回复:

最新状态:

2012-10-18:不小心忽略了,向大家致歉。涉及的部分案例,如:人民银行项目系统,已通过正式函件向人民银行科技司提交事件处置函。同时,在16日已联系腾讯公司,腾讯公司回复已经关注到案例情况,但目前暂未提供进一步的解决方案。CNCERT认为,对相关页面、用户管理的权限审计设计存在缺陷。