发新话题
打印

网御神州 网神 天融信 西安网赢 卫士通 吉大正元 凹凸 ANIX vpn设备厂商批量漏洞(二)

网御神州 网神 天融信 西安网赢 卫士通 吉大正元 凹凸 ANIX vpn设备厂商批量漏洞(二)

漏洞概要
缺陷编号:        WooYun-2014-48960
漏洞标题:        国内外多家vpn设备厂商批量漏洞(续集二)
相关厂商:        众多vpn厂商
漏洞作者:        felixk3y
提交时间:        2014-01-15 10:43
公开时间:        2014-04-15 10:44
漏洞类型:        设计不当
危害等级:        高
自评Rank:        20
漏洞状态:        已交由第三方厂商(cncert国家互联网应急中心)处理
漏洞来源:        http://www.wooyun.org
Tags标签:       运维管理不当 信息泄露 源代码泄露 安全管理不到位

漏洞详情披露状态:
2014-01-15:        细节已通知厂商并且等待厂商处理中
2014-01-20:        厂商已经确认,细节仅向厂商公开
2014-01-23:        细节向第三方安全合作伙伴开放
2014-01-30:        细节向核心白帽子及相关领域专家公开
2014-02-09:        细节向普通白帽子公开
2014-03-01:        细节向实习白帽子公开
2014-04-15:        细节向公众公开

简要描述:暂时不出续集三了,将发现的问题一起放出来...
经测试,此系列漏洞任然普遍存在,成功利用此系列漏洞有下列威胁
1.任意文件上传;
2.任意代码/命令执行;
3.任意文件下载/删除
4.严重敏感信息泄露
4.整个源代码泄露等等等...
倘若进一步利用,危害性将非常大。
同时该漏洞涉及到包括网御神州、天融信、西安网赢、卫士通、吉大正元、美国凹凸、德国 ANIX等多家VPN厂商设备在政务、地产、运营商、政府部门、高校、企业、公安、司法、银行等行业存在的任意文件下载、远程命令执行、维护后门、三方平台帐号泄漏、恶意客户端下发等高位漏洞。

详细说明:#1 同样请先看


code 区域 WooYun: 国内外多家vpn设备厂商批量漏洞(续集一)

在测试的过程中,我大概看了下源代码,于是就有了这个漏洞...

#2 系列漏洞---任意文件上传漏洞

先列举其一

/admin/system/cert_request_import_action.php 代码如下


code 区域<?
include_once "management/certificate.php";//此文件没有权限的验证,SO...

$MAX_SIZE= 2*1000*1000;
if ($_FILES['gw_cert']) {
        $file_size = $_FILES['gw_cert']['size'];
        $file_type = $_FILES['gw_cert']['type'];
        
        $temp_name = $_FILES['gw_cert']['tmp_name'];
        $gw_file_name = $_FILES['gw_cert']['name'];
        $gw_file_name = str_replace("\\","",$gw_file_name);
        $gw_file_name = str_replace("'","",$gw_file_name);
        $gw_file_name = str_replace(" ","",$gw_file_name);

        $file_path = $CFG_UPLOAD_PATH.$gw_file_name;

        //File Name Check
        if ( $gw_file_name == "" ) {
                include "include/error.php";
                return;
        }
        $gw_file_name = $file_path;

        $result  =  move_uploaded_file($temp_name, $file_path);
        chmod($file_path, $CFG_UPLOAD_MOD);
} else {
        include "include/error.php";
        return;
}

if ($_FILES['iss_cert']) {
        $file_size = $_FILES['iss_cert']['size'];
        $file_type = $_FILES['iss_cert']['type'];
        
        $temp_name = $_FILES['iss_cert']['tmp_name'];
        $iss_file_name = $_FILES['iss_cert']['name'];
        $iss_file_name = str_replace("\\","",$iss_file_name);
        $iss_file_name = str_replace("'","",$iss_file_name);
        $iss_file_name = str_replace(" ","",$iss_file_name);

        $file_path = $CFG_UPLOAD_PATH.$iss_file_name;

        //File Name Check
        if ( $iss_file_name == "" ) {
                include "include/error.php";
                return;
        }
        $iss_file_name = $file_path;

        $result  =  move_uploaded_file($temp_name, $file_path);
        chmod($file_path, 0777);
}

$CM = new CertificateManager;
if ($_FILES['iss_cert'])
        $msg = $CM->Import_GW_CA_Cert($ticket, $gw_file_name, $iss_file_name);
else
        $msg = $CM->Import_GW_CA_Cert($ticket, $gw_file_name, "");

$RURL = "?body=3";
$RURL1 = "?body=4";
if ($msg != "OK")
        include "include/error.php";
else
        echo "<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"0; URL=".$RURL."\">";
?>

我们来看下其上传的代码是怎样写的


code 区域if ($_FILES['gw_cert']) {
        $file_size = $_FILES['gw_cert']['size'];
        $file_type = $_FILES['gw_cert']['type'];
        
        $temp_name = $_FILES['gw_cert']['tmp_name'];
        $gw_file_name = $_FILES['gw_cert']['name'];
        $gw_file_name = str_replace("\\","",$gw_file_name);
        $gw_file_name = str_replace("'","",$gw_file_name);
        $gw_file_name = str_replace(" ","",$gw_file_name);

        $file_path = $CFG_UPLOAD_PATH.$gw_file_name;

        //File Name Check
        if ( $gw_file_name == "" ) {
                include "include/error.php";
                return;
        }
        $gw_file_name = $file_path;

        $result  =  move_uploaded_file($temp_name, $file_path);
        chmod($file_path, $CFG_UPLOAD_MOD);
} else {
        include "include/error.php";
        return;
}

看见了吧,只要稍有代码编写能力的人都可以看出来有问题,完全没有经过任何的安全检查便把文件写入的对方硬盘..对此我不想多说什么,更不想去做测试,因为那简直就是浪费时间..(我表示很无语啊,这样的代码写的东西至少我不敢用,你们敢吗?)

存在同样问题的地方还有如下文件:


code 区域/sub_ca_action.php
/admin/system/gw_cert_import_action.php
/admin/account/admin_add_action.php
/admin/account/group_batch_add_action.php
/admin/authentication/mini_ca_action.php
/admin/authentication/mini_ca_action.php
....

还有很多,还请都检查下...

#2 系列漏洞---任意文件下载/删除

问题出现在:/admin/system/backup_down.php 代码如下


code 区域<?
if (isset($_POST["file_name"]))
        $file_name = "/data/upload/sysbackup_".$_POST["file_name"].".bin";
else {
        header("Location: ../login.php");
        return;
}
header("Pragma: ");
header("Cache-Control: ");
header("Content-type: application/octet-stream");
header("Content-Length: ".filesize($file_name));
header("Content-Disposition: attachment; filename=\"sysbackup.bin\"");
readfile($file_name);
@unlink($file_name);
?>

看见了吧,没有任何的权限验证,没有任何的安全检查...这个也不想多说,不测试,真的是浪费时间...

#2 系列漏洞---配置信息泄露

根目录下的 htdocs 中的文件


code 区域2014/01/09  16:40    <DIR>          .
2014/01/09  16:40    <DIR>          ..
2014/01/07  14:00             3,550 httpd-mpm.conf.big
2014/01/07  14:00             3,550 httpd-mpm.conf.small
2014/01/07  14:00             3,089 httpd.conf
2014/01/07  14:00             3,148 httpd.conf-80
2014/01/07  14:00             2,183 index.php
               5 个文件         15,520 字节
               2 个目录 105,551,912,960 可用字节

能过Web可以访问,此处以httpd.conf为例:




code 区域ServerRoot "/usr"

Listen 127.0.0.1:1
#Listen 80

LoadModule auth_basic_module lib/httpd/modules/mod_auth_basic.so
LoadModule include_module lib/httpd/modules/mod_include.so
LoadModule env_module lib/httpd/modules/mod_env.so
LoadModule mime_magic_module lib/httpd/modules/mod_mime_magic.so
LoadModule expires_module lib/httpd/modules/mod_expires.so
LoadModule headers_module lib/httpd/modules/mod_headers.so
LoadModule setenvif_module lib/httpd/modules/mod_setenvif.so
LoadModule mime_module lib/httpd/modules/mod_mime.so
LoadModule autoindex_module lib/httpd/modules/mod_autoindex.so
LoadModule cgi_module lib/httpd/modules/mod_cgi.so
LoadModule vhost_alias_module lib/httpd/modules/mod_vhost_alias.so
LoadModule dir_module lib/httpd/modules/mod_dir.so
LoadModule actions_module lib/httpd/modules/mod_actions.so
LoadModule alias_module lib/httpd/modules/mod_alias.so
LoadModule rewrite_module lib/httpd/modules/mod_rewrite.so

User root
Group root

ServerAdmin cheng.zhang@o2micro.com

#ServerName www.example.com:80
ServerName 127.0.0.1

DocumentRoot "/ssl/www"

<Directory />
    Options FollowSymLinks ExecCGI
    AllowOverride None
#    Order deny,allow
#    Deny from all
</Directory>

<Directory "/ssl/www">
    Options -Indexes FollowSymLinks MultiViews ExecCGI
    AllowOverride None
</Directory>

<IfModule dir_module>
    DirectoryIndex index.html index.php login.php
</IfModule>

ErrorLog /dev/null
#ErrorLog /var/log/httpd/error_log
#LogLevel warn

DefaultType text/plain

<IfModule mime_module>
    TypesConfig /etc/httpd/mime.types

    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz

    AddHandler cgi-script .cgi
</IfModule>

#MIMEMagicFile /etc/httpd/magic

# Server-pool management (MPM specific)
Include /etc/httpd/extra/httpd-mpm.conf

# Multi-language error messages
#Include /etc/httpd/extra/httpd-multilang-errordoc.conf

# Fancy directory listings
#Include /etc/httpd/extra/httpd-autoindex.conf

# Language settings
#Include /etc/httpd/extra/httpd-languages.conf

# User home directories
#Include /etc/httpd/extra/httpd-userdir.conf

# Real-time info on requests and configuration
#Include /etc/httpd/extra/httpd-info.conf

# Virtual hosts
#Include /etc/httpd/extra/httpd-vhosts.conf

# Local access to the Apache HTTP Server Manual
#Include /etc/httpd/extra/httpd-manual.conf

# Distributed authoring and versioning (WebDAV)
#Include /etc/httpd/extra/httpd-dav.conf

# Various default settings
Include /etc/httpd/extra/httpd-default.conf

# Override the setting in httpd-default.conf
KeepAlive Off
ServerSignature Off
ServerTokens Prod
Timeout 180  

# Uncomment the following line to enable PHP:
#
Include /etc/httpd/mod_php.conf

<VirtualHost 127.0.0.1:1>
        ServerName 127.0.0.1
        DocumentRoot "/ssl/www"
        RewriteEngine on
        RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
        RewriteRule .* -[F]
        RewriteRule ^/admin$ /admin/ [R]
</VirtualHost>

#<VirtualHost _default_:80>
#        ServerName 127.0.0.1
#        DocumentRoot "/ssl/www/htdocs"
#        Alias /admin/ "/ssl/www/htdocs/"
#        RewriteEngine on
#        RewriteRule ^/admin$ /admin/ [R]
#</VirtualHost>
漏洞证明:#4 系列漏洞---源代码泄露

在整个系统中,有很多的重要php文件,配置文件以.inc的文件格式存放,恰巧,几乎所有的站点都没有对其进行安全处理,造成了严重的安全漏洞

例如:

/filepass/ 目录下的filepass_helper.inc

/filepass/ftp/目录下的ftp_cmd.inc ftp_user.inc


code 区域2014/01/07  14:00             6,585 ftp_cmd.inc
2014/01/07  14:00             3,531 ftp_***.php
2014/01/07  14:00             4,358 ftp_***.php
2014/01/07  14:00               702 ftp_***.php
2014/01/07  14:00            21,572 ftp_helper.inc
2014/01/07  14:00             4,653 ftp_***.php
2014/01/07  14:00            10,056 ftp_***.php
2014/01/07  14:00            11,489 ftp_screen_pda.php
2014/01/07  14:00             3,031 ftp_***.php
2014/01/07  14:00            11,703 ftp_user.inc

/filepass/share/目录下的share_user.inc等

2014/01/07 14:03 <DIR> conf

2014/01/07 14:00 4,173 share_***.php

2014/01/07 14:00 8,898 share_***.php

2014/01/07 14:00 711 share_***.php

2014/01/07 14:00 16,977 share_helper.inc

2014/01/07 14:00 3,960 share_***.php

2014/01/07 14:00 9,383 share_***.php

2014/01/07 14:00 11,620 share_***.php

2014/01/07 14:00 19,769 share_***.php

2014/01/07 14:00 3,162 share_***.php

2014/01/07 14:00 13,136 share_user.inc

其他的差不多都忘了...

还有很多都请好好检查下,下面给一个例子,请看.

https://vpn.mcut.edu.tw//filepass/ftp/ftp_user.inc





https://vpn.mcut.edu.tw//filepass/share/share_user.inc





好了,暂时就到这里,不继续深入了

对了,我想问一下,用该VPN系统的用户有Windwos环境搭建的吗?


修复方案:你们懂.
版权声明:转载请注明来源 felixk3y@乌云

漏洞回应
厂商回应:
危害等级:高
漏洞Rank:20
确认时间:2014-01-20 09:43
厂商回复:cnvd确认并复现所述情况,已经分别根据测试用例按厂商整理通报,拟联系软件生产厂商处置,由于存在代码同源情况,对于oem源暂不认定。同时对电信,教育,政府部门案例进行分类整理,拟分别通报基础电信企业,教育网应急组织和下发各分中心处置。

rank 40+

最新状态:暂无

原文:http://www.wooyun.org/bugs/wooyun-2010-048960

[ 本帖最后由 linda 于 2016-2-15 11:01 编辑 ]

TOP

发新话题