产品介绍(摘自官网) U-Mail专注于电子邮件领域15年,为企业轻松搭建最安全稳定的电子邮件系统软件。 关键字:15年 最安全 最稳定 {15年 最安全 最稳定} , (w)(o)(x)(*)(a)(o)(l)(e),这么奇葩的代码,这么奇葩的设计、这么奇葩的配置、这么奇葩的、超常轻松的、利用正常的不能再正常的功能就可以拿到shell的系统,我服了... 涉及:金融、政府、银行,石油、军队、证券行业等重要部门,影响非常巨大,经测试受影响率:99.8%~100% 场外话:我很想把农业银行拿下来的,想想还是算了,毕竟随便改卡里的数字,成土豪了,这样是极其不安全的..   #1 产品介绍   U-Mail邮件服务器,为企业轻松搭建最安全稳定的电子邮件系统软件。U-Mail专注于电子邮件领域15年,将广大企事业单位对邮箱服务器软件稳定安全的各类需求,与电子邮件应用管理的多样化、个性化为目标做深入开发,最大化拓展企业邮箱系统功能的灵活性和稳定性,使之成为政府部门、大专院校、中小学校、企事业集团和从事销售企业邮箱软件的网络服务商、集成商最理想的企业邮局系统架设软件。   支持数字证书服务并提供强大的管理功能,可直接在WebMail中撰写或阅读经过数字签名或数字加密的安全邮件(S/MIME)。提供军事级别的高安全强度(4096位DH/DSS加密或2048位RSA加密);   使用TLS/SSL标准安全套接字层通讯协议(1024位RSA加密),支持包括 SSL SMTP, SSL POP3, SSL IMAP4 安全通讯服务,防止网络侦听,使得通信更安全。     #3 先来说说真正的上传漏洞,再说奇葩的配置问题   漏洞文件   /client/mail/module/o_attach.php   代码如下(代码是Zend 加密的,但是呢..)  

if ( ACTION == "attach-upload" )

{

    if ( $_FILES )

    {

        $file_name = $_FILES['Filedata']['name'];

        $file_type = $_FILES['Filedata']['type'];

        $file_size = $_FILES['Filedata']['size'];

        $file_source = $_FILES['Filedata']['tmp_name'];

        $file_suffix = getfilenamesuffix( $file_name );

        $not_allow_ext = array( "php", "phps", "php3", "exe", "bat" );

        if ( in_array( $file_suffix, $not_allow_ext ) )

        {

            dump_json( array( "status" => 0, "message" => el( "不支持该扩展名文件上传", "" ) ) );

        }

        $path_target = getusercachepath( );

        do

        {

            $file_id = makerandomname( );

            $file_target = $path_target.$file_id.".".$file_suffix;

        } while ( file_exists( $file_target ) );

        if ( move_uploaded_file( $file_source, $file_target ) )

        {

            dump_json( array( "status" => 0, "message" => el( "写入文件出错,请与管理员联系!", "" ) ) );

        }

        $_SESSION[SESSION_ID]['attach_cache'][] = array( "id" => $file_id, "name" => $file_name, "type" => "1", "path" => $file_target, "size" => $file_size );

        dump_json( array( "status" => "1", "filename" => $file_name, "filesize" => $file_size, "file_id" => $file_id ) );

    }

    else

    {

        dump_json( array( "status" => "0", "message" => el( "无法找到需要上传的文件!", "" ) ) );

    }

}

 

    这里的话,主要是你们对前段时间对该漏洞修复不完善,可以绕过,导致可以再次上传任意文件,获取服务器权限..   首先来看看你们是怎样修复的

$not_allow_ext = array( "php", "phps", "php3", "exe", "bat" );

        if ( in_array( $file_suffix, $not_allow_ext ) )

        {

            dump_json( array( "status" => 0, "message" => el( "不支持该扩展名文件上传", "" ) ) );

        }

 

  这不就是典型的黑名单限制嘛,黑名单太不靠谱了,于是可以轻易的绕过..   这里就不给出具体的证明了,文件的上传可以参考先前的这个漏洞   U-Mail任意文件上传漏洞一枚:http://www.2cto.com/Article/201408/328288. html     但由于官方已经修复了这个漏洞,当然利用上面的方法是无法成功上传的,要稍微改变下   构造表单上传的时候,采用Burp抓包上,修改上传的文件名 如下   Content-Disposition: form-data; name="Filedata"; filename="shell.jpg"   修改为   Content-Disposition: form-data; name="Filedata"; filename="shell.php "   注意:shell.php后面的个空格     提交,即可获取webshell,如图   U-Mail邮件服务系统任意文件上传+执行漏洞(run插图     (当时并不是这样获取到的webshell,当时获取webshell是通过#4的方法获取到的)       #4 奇葩的U-Mail环境   当时测试这个文件上传的时候( www.wooyun.org/bugs/wooyun-2014-059954 ),由于修复了,获取不到shell,当测试上传正常的jpg图片时,图片地址为   http://mail.comingchina.com/webmail/client/cache/78427/14006861677.jpg     可以当时手抖了下 在连接后面加上/.php 不可思议的是,居然解析了..   U-Mail邮件服务系统任意文件上传+执行漏洞(run插图1   难道是Nginx??? No!!!居然是IIS的,太奇葩了  
U-Mail邮件服务系统任意文件上传+执行漏洞(run插图2   不过更奇葩的还在后面...      
  修复方案: 不想多说了

    上一篇: 某OA系统越权、多处SQL注入及任意用户登陆包括管

    下一篇: Anymacro邮件系统任意文件下载漏洞 - 网站安全 -
本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《U-Mail邮件服务系统任意文件上传+执行漏洞(run
   

还没有人抢沙发呢~