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/
解压
1 |
|
运行
1 |
|
发现报错了,缺少了java环境
安装java环境
安装jdk8
搜索jdk8版本
1 |
|
安装
1 |
|
运行solr
1 |
|
这个地方会有问题
没有权限,添加一个权限
1 |
|
运行solr
服务就启动了
创建一个core
出现报错
将server/solr/configsets/default/conf复制到new_core
1 |
|
然后再次创建就能成功创建了
漏洞复现
当前使用kali linux操作,使用ssh远程连接
攻击机kali监听
1 |
|
然后
使用payload
1 |
|
但是这里又有一个问题
使用curl访问的时候会出现问题
但是直接使用浏览器访问就会成功
这个是因为传入参数的时候使用了&
符号,但是在linux命令行的&
是连接两个命令的符号,所以会出现报错,解决办法是,使用\
转义一下,就可以
1 |
|
这个就是说明这个存在SSRF漏洞
为什么能判断存在漏洞存在SSRF漏洞?
因为masterUrl=http://192.168.157.114:19977 是我们的地址,并且不是一个有效的数据源
尝试漏洞利用
先开启远程文件读取
1 |
|
使用file://
协议访问服务器的文件
1 |
|
防护建议
升级 Solr 版本大于等于8.8.2
禁用流传输功能
限制访问,限制特殊的IP访问Solr的API,也就是说防止未授权访问
定期检查配置,防止客户端修服务器的配置