大华智能物联管理平台1day分析
字数 1527 2025-09-01 11:26:03

大华智能物联管理平台1day漏洞分析与利用教学文档

漏洞概述

本文档详细分析了大华智能物联管理平台(ICC)中的一个1day漏洞,该漏洞存在于/evo-runs/v1.0/receive接口,可导致前台命令执行和任意文件写入。漏洞影响面较广,在国护行动中已被证实有效利用。

漏洞分析

漏洞位置

漏洞核心位于com.dahua.evo.runs.service.impl.MsgDealServiceImpl#msgDeal方法,该方法可以调用部分MsgHandlerMsgDeal方法。该服务在com.dahua.evo.runs.controller.agent.MsgDealConrtoller中被多处调用。

漏洞路由

主要分析的路由为/evo-runs/v1.0/receive,其实现位于com.dahua.evo.runs.controller.agent.MsgDealConrtoller#receive,基本上直接调用了msgDeal方法。

鉴权绕过

该路由受com.dahua.evo.runs.filter.AuthFilter#doFilter保护,URL模式为/*。绕过鉴权的方法有以下几种:

  1. 方法一:请求头X-Subject-HeaderFlag设置为ADAPT
  2. 方法二:请求头X-Subject-HeaderFlag设置为CLOUD,且满足this.serverIsCloud || this.serverIsAgent条件
  3. 方法三:请求头X-Subject-Sign满足签名验证

最通用方法:使用X-Subject-HeaderFlag: ADAPT头,在不同版本中兼容性最好。

漏洞利用点

寻找com.dahua.evo.runs.agent.handler.AbstractMsgHandler的所有实现类,发现多个可利用的类。以OssmConfigHandler为例:

  1. 任意文件写入writeMappingFile方法的文件名和文件内容完全可控
  2. 命令执行Executor.execute命令可控

限制:系统不会解析JSP文件,因此直接写入JSP文件无法实现getshell。

复现过程

  1. 构造请求,添加X-Subject-HeaderFlag: ADAPT头绕过鉴权
  2. 调用/evo-runs/v1.0/receive接口
  3. 通过参数控制调用特定的MsgHandler实现类(如OssmConfigHandler
  4. 利用writeMappingFile实现任意文件写入或利用Executor.execute实现命令执行

高级利用技巧

虽然系统默认不解析JSP文件,但存在以下利用方式:

  1. 利用系统自身开启的服务来解析JSP文件(具体实现需进一步分析代码)
  2. 其他未公开的利用链和技巧(文中提到有多个接口仍存在未鉴权情况)

防御建议

  1. 严格校验X-Subject-HeaderFlag头的合法性
  2. 对所有敏感操作添加权限验证
  3. 限制MsgHandler实现类的危险方法调用
  4. 对文件写入和命令执行操作进行严格的输入过滤

总结

该漏洞利用链清晰,影响面广,可导致严重的远程代码执行。虽然直接写入JSP文件不可行,但通过系统自身服务解析JSP或其他利用链仍可实现完全控制。建议用户及时更新补丁,并检查系统是否存在类似未鉴权的接口。

扩展思考

  1. 如何发现更多未鉴权的接口?
  2. 如何利用系统自身服务解析JSP文件?
  3. 是否存在其他未公开的利用链?

这些问题的答案需要进一步分析代码实现,寻找系统架构中的特殊设计点。

大华智能物联管理平台1day漏洞分析与利用教学文档 漏洞概述 本文档详细分析了大华智能物联管理平台(ICC)中的一个1day漏洞,该漏洞存在于 /evo-runs/v1.0/receive 接口,可导致前台命令执行和任意文件写入。漏洞影响面较广,在国护行动中已被证实有效利用。 漏洞分析 漏洞位置 漏洞核心位于 com.dahua.evo.runs.service.impl.MsgDealServiceImpl#msgDeal 方法,该方法可以调用部分 MsgHandler 的 MsgDeal 方法。该服务在 com.dahua.evo.runs.controller.agent.MsgDealConrtoller 中被多处调用。 漏洞路由 主要分析的路由为 /evo-runs/v1.0/receive ,其实现位于 com.dahua.evo.runs.controller.agent.MsgDealConrtoller#receive ,基本上直接调用了 msgDeal 方法。 鉴权绕过 该路由受 com.dahua.evo.runs.filter.AuthFilter#doFilter 保护,URL模式为 /* 。绕过鉴权的方法有以下几种: 方法一 :请求头 X-Subject-HeaderFlag 设置为 ADAPT 方法二 :请求头 X-Subject-HeaderFlag 设置为 CLOUD ,且满足 this.serverIsCloud || this.serverIsAgent 条件 方法三 :请求头 X-Subject-Sign 满足签名验证 最通用方法 :使用 X-Subject-HeaderFlag: ADAPT 头,在不同版本中兼容性最好。 漏洞利用点 寻找 com.dahua.evo.runs.agent.handler.AbstractMsgHandler 的所有实现类,发现多个可利用的类。以 OssmConfigHandler 为例: 任意文件写入 : writeMappingFile 方法的文件名和文件内容完全可控 命令执行 : Executor.execute 命令可控 限制 :系统不会解析JSP文件,因此直接写入JSP文件无法实现getshell。 复现过程 构造请求,添加 X-Subject-HeaderFlag: ADAPT 头绕过鉴权 调用 /evo-runs/v1.0/receive 接口 通过参数控制调用特定的 MsgHandler 实现类(如 OssmConfigHandler ) 利用 writeMappingFile 实现任意文件写入或利用 Executor.execute 实现命令执行 高级利用技巧 虽然系统默认不解析JSP文件,但存在以下利用方式: 利用系统自身开启的服务来解析JSP文件(具体实现需进一步分析代码) 其他未公开的利用链和技巧(文中提到有多个接口仍存在未鉴权情况) 防御建议 严格校验 X-Subject-HeaderFlag 头的合法性 对所有敏感操作添加权限验证 限制 MsgHandler 实现类的危险方法调用 对文件写入和命令执行操作进行严格的输入过滤 总结 该漏洞利用链清晰,影响面广,可导致严重的远程代码执行。虽然直接写入JSP文件不可行,但通过系统自身服务解析JSP或其他利用链仍可实现完全控制。建议用户及时更新补丁,并检查系统是否存在类似未鉴权的接口。 扩展思考 如何发现更多未鉴权的接口? 如何利用系统自身服务解析JSP文件? 是否存在其他未公开的利用链? 这些问题的答案需要进一步分析代码实现,寻找系统架构中的特殊设计点。