在目前可得的描述中可以得出这个漏洞主要是因为使用 PKIAuthenticationPlugin 的 Solr 实例(在使用 Solr 身份验证时默认启用)容易受到身份验证绕过的影响,下来着重分析绕过数据的传递过程
前言
最近solr爆出了新的身份绕过漏洞,工作中要对该漏洞进行复现,正好将分析的过程记录一下
在通报中可以看到该漏洞的评级那是相当高,CVSS3直接高达9.8分,在描述中可以得出这个漏洞主要是因为使用 PKIAuthenticationPlugin 的 Solr 实例(在使用 Solr 身份验证时默认启用)容易受到身份验证绕过的影响

环境搭建
当我们初步了解了漏洞的基本信息之后,开始搭建环境,因为之前咱们说的PKIAuthenticationPlugi主要用于在分布式 SolrCloud 环境中,所以咱们要搭建一个SolrCloud集群环境
集群环境基本身份验证需要我们首先创建一个security.json文件,对于基本身份验证,security.json文件必须有一个authentication部分,它定义用于身份验证的类。可以在创建文件时添加用户名和密码(例如:sha256(password+salt) hash),或者可以稍后使用基本验证API添加。
下面的配置信息为:
1.启用基本身份验证和基于规则的授权插件。
2.参数 “blockUnknown”: true 表示不允许未经身份验证的请求通过。
3.已定义了一个名为 “solr” 的用户,其中有密码 “SolrRocks”。
4.“admin” 角色已定义,并且具有编辑安全设置的权限。
5.“solr” 用户已被定义为 “admin” 角色。
{
“authentication”: {
“class”: “solr.BasicAuthPlugin”,
“credentials”: {
“solr”: “IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c=”
},
“blockUnknown”: false,
“”: {
“v”: 0
}
},
“authorization”: {
“class”: “solr.RuleBasedAuthorizationPlugin”,
“permissions”: [
{
“name”: “security-edit”,
“role”: “admin”
}
],
“user-role”: {
“solr”: “admin”
}
}
}
然后我们通过镜像来搭建集群环境
下面的配置文件docker-compose.yaml中首先要注意的就是把上面的权限配置设置复制到容器中,[your-local-path]security.json记得替换为自己的目录
然后在文件中我们也打开了5006的java远程调试端口
创建了一个solr的network网络
version: ‘3.7’
services:
solr1:
image: solr:9.6.0
container_name: solr1e
ports:
- “8983:8983”
- “5006:5006”
environment:
- ZK_HOST=zoo1:2181,zoo2:2181,zoo3:2181
- SOLR_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5006
volumes:
- [your-local-path]security.json:/var/solr/data/security.json
networks:
- solr
depends_on:
- zoo1
- zoo2
- zoo3
solr2:
image: solr:9.6.0
container_name: solr2
ports:
- “8982:8983”
environment:
- ZK_HOST=zoo1:2181,zoo2:2181,zoo3:2181
networks:
- solr
depends_on:
- zoo1
- zoo2
- zoo3
solr3:
image: solr:9.6.0
container_name: solr3
ports:
- “8981:8983”
environment:
- ZK_HOST=zoo1:2181,zoo2:2181,zoo3:2181
networks:
- solr
depends_on:
- zoo1
- zoo2
- zoo3
zoo1:
image: zookeeper:3.8
container_name: zoo1
restart: always
hostname: zoo1
ports:
- 2181:2181
- 7001:7000
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
ZOO_4LW_COMMANDS_WHITELIST: mntr, conf, ruok

1601

被折叠的 条评论
为什么被折叠?



