漏洞级别:高危
漏洞类型:硬编码默认账号(CWE-798)
简述:Apache Solr 认证开启工具存在高危缺陷,管理员开启身份认证后,程序会静默创建4组公开默认账号,攻击者可直接登录接管Solr服务,实现数据窃取、篡改甚至远程命令执行,危害业务整体安全。
一、前置科普:Apache Solr 是什么?
很多开发、运维同学只知道引入依赖,却不清楚Solr组件的作用,这里直白给大家讲解。
Apache Solr 是一款基于Lucene开发的开源企业级全文搜索引擎,由Java语言编写,主打高性能、高可用,是目前行业内主流的检索中间件之一。
1. 核心功能
-
全文检索:支持中文分词、关键词匹配、搜索高亮、同义词匹配,适配各类检索场景
-
数据聚合筛选:提供分面搜索、条件过滤、排序、统计聚合等能力
-
大数据适配:可承载千万至亿级数据,毫秒级响应检索请求
-
分布式集群:支持SolrCloud集群部署,支持横向扩容、故障自动切换,满足生产高可用需求
2. 项目中常见依赖包
Java项目中,我们一般会引入两个核心依赖包,分工明确:
-
solr-core:服务端核心包,内置Jetty容器、后台管理UI、索引创建、数据存储等全套服务能力,用于独立部署Solr服务
-
solr-solrj:客户端SDK,业务项目通过该包提供的API,远程调用Solr服务,完成数据增删改查、关键词检索
适用场景:电商商品搜索、网站站内检索、日志分析平台、知识库文档检索、大数据业务快速查询等。
二、漏洞详细分析
1. 受影响版本
该漏洞并非全版本覆盖,仅针对Solr 9、10系列新版本,老旧8.x版本无风险:
-
受影响版本:9.4.0 ~ 9.10.1、10.0.0
-
无风险版本:8.x及以下所有版本、9.10.2及以上修复版本
2. 漏洞产生原理
为解决Solr裸奔部署无认证的安全问题,官方提供了一键认证命令:bin/solr auth enable,该命令用于快速开启Basic身份认证。
正常逻辑:管理员执行命令并自定义账号密码,生成security.json配置文件,仅自定义账号可登录后台。
漏洞核心缺陷 :开发者在该功能中预埋硬编码逻辑,执行认证开启命令时,程序除创建管理员自定义账号外,会静默自动新增4组固定账号,且不会告知管理员,账号密码一一对应:
-
superadmin / superadmin(最高权限,可操控集群所有功能)
-
admin / admin(管理员权限)
-
index / index(索引操作权限)
-
search / search(只读检索权限)
3. 漏洞危害
-
攻击者利用公开默认账号,直接登录Solr管理后台;
-
高权限账号可读取、删除、篡改全部业务索引数据;
-
可修改服务配置、上传恶意配置文件,触发远程代码执行;
-
若为集群部署,攻击者可直接接管整套SolrCloud集群。
三、自查:你的项目是否存在漏洞?
只有同时满足以下三个条件,项目才会受此漏洞影响:
-
Solr版本处于受影响范围内(9.4.0~9.10.1、10.0.0);
-
曾经使用
solr auth enable命令开启过Basic账号认证; -
服务器8983默认端口可被外网/非可信内网IP访问。
1. 查看依赖版本(内嵌Solr项目)
打开项目 pom.xml,检索solr相关依赖,查看version标签:
XML
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-core</artifactId>
<version>9.7.0</version>
</dependency>
<dependency>
<groupId>org.apache.solr</groupId>
<artifactId>solr-solrj</artifactId>
<version>9.7.0</version>
</dependency>
2. 独立部署Solr查看版本
Linux/Mac 命令:
XML
cd /你的solr路径/bin ./solr -version
Windows 命令:
XML
cd D:\solr\bin solr.cmd -version
3. 验证默认账号是否可用
使用curl命令测试高危默认账号,替换为你的服务器IP:
XML
# 测试superadmin账号
curl -u superadmin:superadmin http://IP:8983/solr/admin/info/system
请求返回200且正常返回系统数据,代表账号可直接登录,漏洞真实存在。
四、全套修复方案
1. 最优方案:升级版本(生产首选)
直接升级至官方修复版本:9.10.2及以上、10.1.0及以上,彻底根除漏洞问题;内嵌项目直接修改依赖版本号即可。
2. 临时紧急修复(无法立刻升级)
方式一:手动删除隐藏默认账号
编辑Solr认证配置文件security.json,删除superadmin、admin、search、index四个内置账号,重启Solr服务生效。
方式二:网络权限隔离
-
防火墙/安全组封禁8983端口外网访问权限,仅放行内网业务服务器IP;
-
前端Nginx反向代理新增规则,拦截后台登录接口的非法访问请求。
3. 兜底方案:版本降级
降级至8.x系列最新稳定版本,该系列版本无此隐藏账号漏洞,适合暂时无法升级、无法修改配置的老旧项目。
五、安全建议总结
-
禁止Solr裸奔上线,所有生产环境必须开启身份认证,并定期巡检内置账号;
-
搜索引擎、缓存、消息队列等中间件,禁止直接对外开放默认端口;
-
定期同步官方安全公告,及时更新中间件版本,规避已知高危漏洞;
-
上线前增加安全检测流程,重点排查硬编码账号、弱口令类高危风险。
免责声明:本文所有检测方案仅用于企业内部自查授权资产,禁止用于非法攻击未授权资产,违者后果自负。