综合安防管理平台/center/api/installation/detection存在远程命令执行漏洞,允许未经身份验证的远程攻击者在服务器端执行任意代码。
漏洞涉及全局搜索路径/detection,定位代码为DeployController。处理过程中涉及传入json格式的DetectRequestBean,当type的值为environment时,调用IInstallDetectServiceImpl#getSystemDetect方法。后续处理涉及对传入的Machines值的获取、遍历,以及命令的组装、发送和执行。
通过POST请求到/center/api/installation/detection,携带特定格式的json数据(包含type、operate和machines字段),可以触发漏洞执行任意命令。
文章来源于https://xz.aliyun.com/,感谢【杰*啊】的分享。
漏洞介绍
某综合安防管理平台/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