Board logo

标题: 江南科友堡垒机直接获取主机账密/IP/暴漏物理路径 [打印本页]

作者: linda    时间: 2016-1-12 10:15     标题: 江南科友堡垒机直接获取主机账密/IP/暴漏物理路径

漏洞概要
缺陷编号:        WooYun-2015-135704
漏洞标题:        江南科友堡垒机直接获取主机账密/IP/暴漏物理路径
相关厂商:        江南科友堡垒机
漏洞作者:        孔卡
提交时间:        2015-08-22 22:30
公开时间:        2015-11-22 19:02
漏洞类型:        非授权访问
危害等级:        高
自评Rank:        10
漏洞状态: 已交由第三方合作机构(cncert国家互联网应急中心)处理
漏洞来源:        http://www.wooyun.org
Tags标签:敏感信息泄露 未授权访问 默认配置高危

漏洞详情披露状态:
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 打开后的结果见图吧







打码打的狠了点,毕竟不是自家的堡垒机。

这些账密在其数据库中存储是sha1加密的,而这样导出直接是明文。接下来能干嘛不废话了。

贴出sso_user_export.php


code 区域<?
/**
* 设置环境变量
*
*/
$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处全部爆物理路径











0x03 吐槽下该堡垒机的无语的默认配置



一.内置一个谁都审计不到的具有最高权限的 Administrator 密码我直接说明文了吧 UnionHAC 方便各位自查。(这个有人说过了,本人亲身测试了3家都是这个密码,省下注入解密了)

二.内置本地mysql数据库 root 123456 你没看错,就这么任性。如果端口限制不严的话,配合物理路径getshell。

三.内置的配置,如ftp日志服务器连接字符串,radius服务器公钥等,虽然都打码的,并且在数据库中sha1加密,但是,只要点编辑,然后保存,你就会发现,明文数据包全部抓到。



好了,之所以贴出明文是希望部分客户看到后直接用以上明文快速测试一下,以确保最后一道防线的安全。


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

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

漏洞回应
厂商回应:
危害等级:高

漏洞Rank:10
确认时间:2015-08-24 19:00
厂商回复:CNVD确认所述情况,已经由CNVD通过以往建立的处置渠道向软件生产厂商通报。
最新状态:暂无
原文:http://www.wooyun.org/bugs/wooyun-2015-0135704





欢迎光临 中神通公司技术论坛 (http://trustcomputing.com.cn/bbs/) Powered by Discuz! 6.0.0