CVE-2020-10189/Zoho ManageEngine Desktop Central 10反序列化远程代码执行
字数 1774 2025-08-26 22:12:03

Zoho ManageEngine Desktop Central 10 反序列化远程代码执行漏洞分析 (CVE-2020-10189)

漏洞概述

2020年3月6日,安全研究人员steventseeley公开了Zoho ManageEngine Desktop Central中的反序列化远程代码执行漏洞。该漏洞允许攻击者直接控制安装该产品的服务器。ManageEngine Desktop Central是一种Windows系统上的端点管理解决方案,用于管理网络中的各种设备(Android手机、Unix服务器、Windows工作站等),通常作为公司内部的中央服务器使用。

影响版本

Zoho ManageEngine Desktop Central < 10.0.479

漏洞编号

CVE-2020-10189

威胁等级

高危

漏洞分析

1. 寻找反序列化点

  1. DesktopCentral_Server/webapps/DesktopCentral/WEB-INF/web.xml中可找到一个名为CewolfServlet的servlet
  2. 该servlet对应的class为de.laures.cewolf.CewolfRenderer,位于DesktopCentral_Server/lib/cewolf-1.2.4.jar
  3. 该类中的get方法通过img参数接收imgKey的值
  4. imgKey会被Storage类中的getChartImage方法调用
  5. FileStorage类(实现Storage接口)中存在getChartImage方法,该方法直接使用ObjectInputStream执行readObject操作,形成反序列化漏洞点

2. 寻找文件上传点

  1. web.xml中找到一个具有上传功能的servlet
  2. 该servlet对应DesktopCentral_Server/lib/AdventNetDesktopCentral.jar中的com.me.mdm.agent.servlets.file.MDMFileUploaderServlet
  3. Post方法中udidfilename为可控参数
  4. filename有后缀名限制(只允许log|txt|zip|7z)
  5. security-mdm-agent.xml中有进一步限制(只允许logger.txt|logger.zip|mdmlogs.zip|managedprofile_mdmlogs.zip)
  6. 尽管有这些限制,仍可上传恶意序列化文件

3. 寻找可用的gadgets

  1. DesktopCentral_Server\lib目录下发现存在漏洞的库:
    • commons-collections.jar(版本3.1)
    • commons-beanutils-1.8.0.jar
  2. 可利用的gadgets:
    • CommonsBeanutils1
    • CommonsCollections3
    • JDK的JDK7U21JRE8U20
  3. 使用ysoserial构建序列化文件时需要注意:
    • 默认依赖版本(1.9.2)与目标系统(1.8.0)不同会导致UID不匹配
    • 需要修改ysoserialpom.xmlcommons-beanutils为1.8系列并重新打包

漏洞利用流程

  1. 构造恶意序列化payload(使用适配的ysoserial
  2. 通过文件上传接口上传恶意文件
  3. 触发CewolfServlet的反序列化操作
  4. 实现远程代码执行

修复建议

升级至Zoho ManageEngine Desktop Central 10.0.479或更高版本

参考链接

  1. https://nosec.org/home/detail/4211.html
  2. https://srcincite.io/pocs/src-2020-0011.py.txt
  3. https://nvd.nist.gov/vuln/detail/CVE-2020-10189

注意事项

  1. 实际利用时需要注意commons-beanutils版本匹配问题
  2. 文件上传路径和名称需要符合系统限制
  3. 反序列化点触发需要构造特定的请求参数
Zoho ManageEngine Desktop Central 10 反序列化远程代码执行漏洞分析 (CVE-2020-10189) 漏洞概述 2020年3月6日,安全研究人员steventseeley公开了Zoho ManageEngine Desktop Central中的反序列化远程代码执行漏洞。该漏洞允许攻击者直接控制安装该产品的服务器。ManageEngine Desktop Central是一种Windows系统上的端点管理解决方案,用于管理网络中的各种设备(Android手机、Unix服务器、Windows工作站等),通常作为公司内部的中央服务器使用。 影响版本 Zoho ManageEngine Desktop Central < 10.0.479 漏洞编号 CVE-2020-10189 威胁等级 高危 漏洞分析 1. 寻找反序列化点 在 DesktopCentral_Server/webapps/DesktopCentral/WEB-INF/web.xml 中可找到一个名为 CewolfServlet 的servlet 该servlet对应的class为 de.laures.cewolf.CewolfRenderer ,位于 DesktopCentral_Server/lib/cewolf-1.2.4.jar 该类中的 get 方法通过 img 参数接收 imgKey 的值 imgKey 会被 Storage 类中的 getChartImage 方法调用 在 FileStorage 类(实现 Storage 接口)中存在 getChartImage 方法,该方法直接使用 ObjectInputStream 执行 readObject 操作,形成反序列化漏洞点 2. 寻找文件上传点 在 web.xml 中找到一个具有上传功能的servlet 该servlet对应 DesktopCentral_Server/lib/AdventNetDesktopCentral.jar 中的 com.me.mdm.agent.servlets.file.MDMFileUploaderServlet Post 方法中 udid 和 filename 为可控参数 filename 有后缀名限制(只允许log|txt|zip|7z) security-mdm-agent.xml 中有进一步限制(只允许logger.txt|logger.zip|mdmlogs.zip|managedprofile_ mdmlogs.zip) 尽管有这些限制,仍可上传恶意序列化文件 3. 寻找可用的gadgets 在 DesktopCentral_Server\lib 目录下发现存在漏洞的库: commons-collections.jar (版本3.1) commons-beanutils-1.8.0.jar 可利用的gadgets: CommonsBeanutils1 CommonsCollections3 JDK的 JDK7U21 和 JRE8U20 使用 ysoserial 构建序列化文件时需要注意: 默认依赖版本(1.9.2)与目标系统(1.8.0)不同会导致UID不匹配 需要修改 ysoserial 的 pom.xml 中 commons-beanutils 为1.8系列并重新打包 漏洞利用流程 构造恶意序列化payload(使用适配的 ysoserial ) 通过文件上传接口上传恶意文件 触发 CewolfServlet 的反序列化操作 实现远程代码执行 修复建议 升级至Zoho ManageEngine Desktop Central 10.0.479或更高版本 参考链接 https://nosec.org/home/detail/4211.html https://srcincite.io/pocs/src-2020-0011.py.txt https://nvd.nist.gov/vuln/detail/CVE-2020-10189 注意事项 实际利用时需要注意 commons-beanutils 版本匹配问题 文件上传路径和名称需要符合系统限制 反序列化点触发需要构造特定的请求参数