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

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

缺陷编号:wooyun-2015-0135704

漏洞标题:江南科友堡垒机直接获取主机账密/IP/暴漏物理路径

相关厂商:江南科友堡垒机

漏洞作者: 孔卡

提交时间:2015-08-22 22:30

修复时间:2015-11-22 19:02

公开时间:2015-11-22 19:02

漏洞类型:非授权访问

危害等级:高

自评Rank:10

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-08-22: 细节已通知厂商并且等待厂商处理中
2015-08-24: 厂商已经确认,细节仅向厂商公开
2015-08-27: 细节向第三方安全合作伙伴开放
2015-10-18: 细节向核心白帽子及相关领域专家公开
2015-10-28: 细节向普通白帽子公开
2015-11-07: 细节向实习白帽子公开
2015-11-22: 细节向公众公开

简要描述:

据说虐狗节还在挖洞的一辈子找不到女盆友~~~~当然了,我这个洞是提前挖好的,上来粘贴复制的!!在等女朋友汇合中~~~~~

详细说明:

看到标题审核估计会以为重复了,那我事先简单说一下先
http://**.**.**.**/bugs/wooyun-2010-077350
这个直接导出主机资源和堡垒机个人用户的漏洞里涉及的俩文件是
/excel/user_export.php 导出后对应user.xls
/excel/server_export.php 导出后对应server.xls
user如果是本地密码存储的话,user.xls里会有sha1加密的hash值,当然,现在大多是radius小令牌认证,自然也就木有密码了。
server.xls 是对所有接入堡垒机的主机资源的一个统计,只有IP和主机名。
没有其他意思,只是介绍一下以便区分我要说的问题点。
然后另外一枚漏洞中泄露物理路径的是这里
**.**.**.**/system/download_cert.php?down_cret=1
客户案例不用说了吧?
好了,下部分开始说正事。

漏洞证明:

0x01 一键获取主机账密、端口、IP
路径是 /excel/sso_user_export.php 导出后文件名也是user.xls 打开后的结果见图吧

userxls的内容.png


打码打的狠了点,毕竟不是自家的堡垒机。
这些账密在其数据库中存储是sha1加密的,而这样导出直接是明文。接下来能干嘛不废话了。
贴出sso_user_export.php

<?
/**
* 设置环境变量
*
*/
$path = 'WEB-INF';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);
require_once('../operation/SSoDB.php');
$db = new SSoDB();
if(!empty($_GET['rsname']))
{
$acc=$db->Getuserinfo($_GET['rsname']);
}
else
$acc=$db->GetAllAccount(1,$db->Get_count());
if(empty($acc))
{
echo '<script type="text/javascript"> alert("抱歉,无帐户可导出!"); history.back(); </script>';
exit;
}
$time=date("Y-m-d");
// print_r($acc);echo "<br>";
for($i=0;$i < count($acc);$i++)
{
$temp_msg[$i][0] = $acc[$i]['name'];
$temp_msg[$i][1] = DecryptPWD($acc[$i]['pwd']);
$temp_msg[$i][2] = $acc[$i]['ip'];
$temp_msg[$i][3] = $acc[$i]['pwd_trusteeship'];
if(!empty($_GET['rsname']))
{
if($acc[$i]['7'] == 0)
{
$temp_msg[$i][3] = '普通帐户';
}
else if($acc[$i]['7'] == 1)
{
$temp_msg[$i][3] = '管理帐户';
}
else if($acc[$i]['7'] == 2)
{
$temp_msg[$i][3] = 'ftp帐户';
}
else
{
$temp_msg[$i][3] = '超级管理帐户';
}
if($acc[$i]['9'] == 0)
{
$temp_msg[$i][4] = '否';
}
else
{
$temp_msg[$i][4] = '是';
}
if($acc[$i]['8'] == 0)
{
$temp_msg[$i][5] = '永久有效';
}
else
{
$temp_msg[$i][5] = $acc[$i]['pwd_lifetime'].'天';
}
if($acc[$i]['10'] == 0)
{
$temp_msg[$i][6] = '未激活';
}
else
{
$temp_msg[$i][6] = '激活';
}
}
else
{
if($acc[$i]['manager_flag'] == 0)
{
$temp_msg[$i][3] = '普通帐户';
}
else if($acc[$i]['manager_flag'] == 1)
{
$temp_msg[$i][3] = '管理帐户';
}
else if($acc[$i]['manager_flag'] == 2)
{
$temp_msg[$i][3] = 'ftp帐户';
}
else
{
$temp_msg[$i][3] = '超级管理帐户';
}
if($acc[$i]['pwd_trusteeship'] == 0)
{
$temp_msg[$i][4] = '否';
}
else
{
$temp_msg[$i][4] = '是';
}
if($acc[$i]['pwd_lifetime'] == 0)
{
$temp_msg[$i][5] = '永久有效';
}
else
{
$temp_msg[$i][5] = $acc[$i]['pwd_lifetime'].'天';
}
if($acc[$i]['state'] == 0)
{
$temp_msg[$i][6] = '未激活';
}
else
{
$temp_msg[$i][6] = '激活';
}
}

$temp_msg[$i][7] = $acc[$i]['spec'];
}
//print_r($temp_msg);exit;
require 'Spreadsheet/Excel/Writer.php';
$workbook = new Spreadsheet_Excel_Writer(); // 初始化类
$workbook->send('user.xls'); // 发送 Excel 文件名供下载
$worksheet =& $workbook->addWorksheet('sheet-1'); // 加入一个工作表 sheet-1
$data = array(
array('帐户名', '密码', 'IP','帐户类型','密码托管','密码有效期','帐户状态','帐户备注')
);
for ($row = 0; $row < count($data); $row ++)
{
for ($col = 0; $col < count($data[0]); $col ++)
{
$worksheet->writeString($row, $col, $data[$row][$col]); // 在 sheet-1 中写入数据
}
}
for ($r = 1; $r <= count($temp_msg); $r ++)
{
for ($c = 0; $c < count($temp_msg[0]); $c++)
{
$worksheet->writeString($r, $c, $temp_msg[$r-1][$c]); // 在 sheet-1 中写入数据
}
}
$col_width = 10;
$worksheet->setColumn(0,1,$col_width*2);
$worksheet->setColumn(2,2,$col_width*2);
$worksheet->setColumn(3,7,$col_width*2);
$workbook->close(); // 完成下载
?>


0x02 直接爆物理路径漏洞
/excel/Spreadsheet/Excel/Writer.php 1处
/excel/Spreadsheet/Excel/Writer/ 路径下Format.php Parser.php BIFFwriter.php Workbook.php Worksheet.php 这5处全部爆物理路径

爆物理路径漏洞截图.png


爆物理路径2.png


0x03 吐槽下该堡垒机的无语的默认配置
一.内置一个谁都审计不到的具有最高权限的 Administrator 密码我直接说明文了吧 UnionHAC 方便各位自查。(这个有人说过了,本人亲身测试了3家都是这个密码,省下注入解密了)
二.内置本地mysql数据库 root 123456 你没看错,就这么任性。如果端口限制不严的话,配合物理路径getshell。
三.内置的配置,如ftp日志服务器连接字符串,radius服务器公钥等,虽然都打码的,并且在数据库中sha1加密,但是,只要点编辑,然后保存,你就会发现,明文数据包全部抓到。
好了,之所以贴出明文是希望部分客户看到后直接用以上明文快速测试一下,以确保最后一道防线的安全。

修复方案:

漏洞忒多,找厂家要下补丁吧,一言难尽啊。我过虐狗节去了哈~

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2015-08-24 19:00

厂商回复:

CNVD确认所述情况,已经由CNVD通过以往建立的处置渠道向软件生产厂商通报。

最新状态:

暂无