什么是 Apache Solr?
Apache Solr 是一个基于 Apache Lucene 的开源搜索平台,广泛应用于构建搜索引擎和数据分析应用。Solr 专为处理海量数据设计,性能高效,支持搜索、内容管理、自然语言处理等多种场景。
漏洞概述
影响范围:
- Solr 5.3.0 至 8.11.4
- Solr 9.7.0 及以下版本
这些版本的 PKIAuthenticationPlugin
(默认启用)存在漏洞,可以通过在 API 路径末尾添加伪造的 URL 片段绕过身份验证。
配置与复现
认证配置文件 security.json
示例:
{
"authentication": {
"class": "solr.BasicAuthPlugin",
"credentials": {
"solr": "IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="
},
"blockUnknown": false
},
"authorization": {
"class": "solr.RuleBasedAuthorizationPlugin",
"permissions": [
{
"name": "security-edit",
"role": "admin"
}
],
"user-role": {
"solr": "admin"
}
}
}
操作步骤:
- 启用身份验证插件:在配置文件中启用
BasicAuthPlugin
和RuleBasedAuthorizationPlugin
。 - 创建用户和角色:
- 用户名:
solr
- 密码:
SolrRocks
- 角色:
admin
,具有security-edit
权限。
- 用户名:
- 搭建测试环境:
使用以下docker-compose.yaml
快速搭建测试环境:
version: '3.7'
services:
solr:
image: solr:9.6.0
ports:
- "8983:8983"
volumes:
- ./security.json:/var/solr/data/security.json
- 将配置上传至 Zookeeper:
solr zk cp /var/solr/data/security.json zk:/security.json -z zoo1:2181
- 绕过身份验证:
- 通过构造以
/admin/info/key
结尾的请求路径,可以绕过身份验证直接访问。
- 通过构造以
技术分析
漏洞核心:PKIAuthenticationPlugin
插件在验证请求时,对以 /admin/info/key
结尾的请求路径未执行完整验证。通过构造特殊的请求路径,可以绕过所有身份验证逻辑。
关键代码分析:
doAuthenticate
方法问题:- 修复前会直接检查路径是否以
/admin/info/key
结尾,如果匹配则跳过所有验证。
- 修复前会直接检查路径是否以
- URI 处理问题:
- 请求路径中
:
后的部分会被截断,从而绕过路径验证。
- 请求路径中
解决方案
- 升级 Solr:尽快升级到 9.7.1 或更高版本。
- 临时修复:关闭不必要的 API,确保只允许认证的请求访问关键数据。
相关patch:
- https://issues.apache.org/jira/secure/attachment/13071024/SOLR-17417.patch
官方公告【含具体攻击POC/EXP】:
- https://issues.apache.org/jira/browse/SOLR-17417
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)