CVE-2025-0655 – 通过未受保护的自定义过滤器在D-Tale中实现远程代码执行
概述
CVE-2025-0655(现被标记为CVE-2024-55890的重复项)最初发现于D-Tale数据可视化工具中的一个关键远程代码执行(RCE)漏洞,特别影响版本3.15.1。该漏洞允许未经身份验证的攻击者通过启用全局设置并滥用暴露的API端点来执行任意系统命令。
- CVE ID: CVE-2025-0655
- 严重性: 严重
- CVSS 分数: 9.8 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
- EPSS 分数: 85.91%
- 发布日期: 2025年1月8日
- 受影响版本: 3.15.1
- 修复版本: 3.16.1
技术分析
漏洞存在于D-Tale后端处理全局配置设置的方式中。具体来说,enable_custom_filters标志(本意用于受控环境)可以通过攻击者精心构造的POST请求进行切换:
|
|
一旦此标志被启用,攻击者可以访问/dtale/test-filter端点,该端点处理用户提供的过滤器表达式。此端点在 unsafe 上下文中评估Python表达式,攻击者可以操纵此表达式注入系统级命令。
实现命令执行的示例负载:
|
|
利用条件
- 无需身份验证(在易受攻击的配置中)
- D-Tale服务器必须暴露于外部访问
- 特别针对版本3.15.1,其中未强制执行保护措施
enable_custom_filters未被服务器端策略锁定
易受攻击的代码片段
虽然完整的源代码上下文未公开,但漏洞涉及过滤器表达式的动态评估:
|
|
当enable_custom_filters设置为true时,此代码通过API路由暴露。
利用步骤
- 发送全局状态切换:通过POST请求到
/dtale/global_state启用enable_custom_filters。 - 构造负载:使用
/dtale/test-filter端点发送包含嵌入系统命令的恶意负载。 - 实现RCE:负载被评估,在运行服务器的上下文中执行提供的代码。
使用Metasploit进行利用
Metasploit包含一个专用模块来利用此漏洞:
|
|
一旦成功,攻击者将获得具有Web服务器用户权限的远程shell。
缓解措施
- 升级:更新到D-Tale版本3.16.1或更高版本,其中此漏洞已修复。
- 限制网络暴露:确保D-Tale仅在受信任的内部网络上可访问。
- 清理输入:避免在生产环境中启用危险设置,如
enable_custom_filters。 - 使用WAF:部署Web应用程序防火墙以检测恶意API调用。
参考
- NVD Advisory for CVE-2025-0655
- GitHub Advisory for CVE-2024-55890
- D-Tale GitHub Repo
- Patch Commit (v3.16.1)
点击下方访问我们学习库中的CVE-2025-0655实验。CVE实验可通过Learn Enterprise账户获取。