乌云(WooYun.org)历史漏洞查询---http://wy.zone.ci/
乌云 Drops 文章在线浏览--------http://drop.zone.ci/
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限制的:
<?phpif (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.php8442 123456http://rtx.dycoal.cn:8012/userlist.phpzsx 123456http://rtx.evoc.cn:8012/userlist.phpsz2054 123456http://www.gaokegroup.com:8012/userlist.php3102 123456
就以高科集团为例(在客户端填好上面的地址,默认8000端口):
这样就能获得公司领导的联系方式了:
还可以使用你们做安全的专业术语,伪造他人与公司财务MM视频传情:
过程算完整了,真是影响哥周末的心情(这么明显的信息泄露,是真2吗?)!
危害等级:无影响厂商忽略
忽略时间:2012-10-18 11:04
2012-10-18:不小心忽略了,向大家致歉。涉及的部分案例,如:人民银行项目系统,已通过正式函件向人民银行科技司提交事件处置函。同时,在16日已联系腾讯公司,腾讯公司回复已经关注到案例情况,但目前暂未提供进一步的解决方案。CNCERT认为,对相关页面、用户管理的权限审计设计存在缺陷。