网站地图    收藏   

主页 > 入门引导 > 黑客攻防 >

U-Mail邮件服务系统任意文件上传+执行漏洞(run

来源:自学PHP网    时间:2015-04-15 15:00 作者: 阅读:

[导读] 产品介绍(摘自官网)U-Mail专注于电子邮件领域15年,为企业轻松搭建最安全稳定的电子邮件系统软件。关键字:15年 最安全 最稳定{15年 最安全 最稳定} , (w)(o)(x)(*)(a)(o)(l)(e),这么奇葩的代...

产品介绍(摘自官网)
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,如图
 
 
 
(当时并不是这样获取到的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 不可思议的是,居然解析了..
 
 
难道是Nginx??? No!!!居然是IIS的,太奇葩了
 

 
不过更奇葩的还在后面...
 
 
 

 
修复方案:
不想多说了

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论