怎样进行Apache Solr最新RCE漏洞分析
引言
Apache Solr爆出RCE 0day漏洞(漏洞编号未给出),这里简单的复现了对象,对整个RCE的流程做了一下分析,供各位看官参考。
漏洞复现
复现版本:8.1.1
实现RCE,需要分两步,首先确认,应用开启了某个core(可以在Core Admin中查看),实例中应用开启了mycore,
然后先向其config接口发送以下json数据,
{
"update-queryresponsewriter": {
"startup": "lazy",
"name": "velocity",
"class": "solr.VelocityResponseWriter",
"template.base.dir": "",
"solr.resource.loader.enabled": "true",
"params.resource.loader.enabled": "true"
}
}
从这个说法,就能看出这个模板引擎是具有执行java代码的功能的,我们只需了解一下它的基本写法,
// 变量定义
#set($name =“velocity”)
// 变量赋值
#set($foo = $bar)
// 函数调用
#set($foo =“hello”) #set(foo.name=bar.name) #set(foo.name=bar.getName($arg))
// 循环语法
#foreach($element in $list)
This is $element
$velocityCount
#end
// 执行模板
template.merge(context, writer);
有了上面这些基本的语法介绍,我们就能理解payload的构造方法了,如果希望更深入的了解,可以自行再去查阅Velocity Java 的资料,我们这里不再深入。
于是通过最后调用的恶意template的merge方法,成功造成了RCE,最后补上关键的调用链。
修复方案
目前官方还未给出补丁,建议对solr做一下访问限制吧。
相关文章