浪潮clusterengine 未授权RCE
浪潮clusterengine 未授权RCE
浪潮clusterengine是浪潮HPC的管理端,是许多大型厂商内部的重要的集群管理软件。
经测试,该系统内部存在诸多未授权接口,可导致任意命令执行
分析
命令执行
在底层定义的
ExecuteUtil
类中,构造了命令执行接口(就很离谱),对cmd
参数并没有做过滤直接拼接到/bin/sh
语句中,调用java.lang.runtime.getruntime()
直接执行(更加离谱)查找调用链
全局搜索
doCommand
方法,发现存在大量接口调用,随意选择了第一个包accountMgr
中的Command
类,发现在getuserjobs
方法中调用该方法。该方法将传入的参数直接拼接在构造的命令语句后也并无过滤,那我们可以继续往前追这个方法
发现
getBillDetail
调用了该方法,且也是直接传入参数并未过滤接着进入
Management
类,发现是通过传入的operation
参数来判断执行什么方法。最后在
Management
类定义的getBillDetail
方法中,发现该方法直接调用了传入的参数,并传入command类定义的getBillDetail
方法中可以看到这个方法在
doResponse
调用,追一下发现最终在servlet
类中调用这个方法根据标记是
acctMgrSerlvet
接口
思路
调用链很清晰,后端接收了前端传入的参数后最终拼接在底层的 executeutil
模板中的命令执行参数里,并且接收参数并没有做过滤。
那通过该接口拼接参数,通过 &
闭合,即可造成rce
攻击
构造参数即可
经检测存在不止一个接口未授权rce
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!