大华智能物联管理平台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文件?
- 是否存在其他未公开的利用链?
这些问题的答案需要进一步分析代码实现,寻找系统架构中的特殊设计点。