Apache Solr是一个开源搜索服务引擎,Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。近日,奇安信CERT安全研究员研究发现Apache Solr全版本存在任意文件读取漏洞,在Solr默认安装后无需任何其它配置即可读取系统任意文件。鉴于漏洞危害较大,建议客户尽快应用缓解措施。

当前漏洞状态

细节是否公开

PoC状态

EXP状态

在野利用

已公开

未知

未知

漏洞描述

Apace Solr广泛应用于一些大型门户网站、电子商务网站等都需要站内搜索功能,使用传统的数据库查询方式实现搜索无法满足一些高级的搜索需求,多部署于公司内网,公网使用量也达到1w+。默认安装后即为未授权访问,且用户使用时大多不会配置身份校验 。

漏洞利用需要两步,首先利用Config API打开默认关闭的requestDispatcher.requestParsers.enableRemoteStreaming开关,然后进行文件读取。

值得注意的是,默认情况下requestDispatcher.requestParsers.enableRemoteStreaming是关闭,攻击者并不能进行任意文件读取。

所以官方并不认为这是一个漏洞,但是从攻击者角度来说可以通过Solr提供的Config API远程打开此开关,然后进行攻击,且Apache Solr生产环境下大多保持默认配置,并无身份校验,此漏洞还是具有一定危害,请厂商酌情处理。

漏洞复现:

第一步:

第二步:

风险等级

奇安信 CERT风险评级为:高危

风险等级:蓝色(一般事件)

影响范围

Solr全版本

处置建议

缓解措施

官方暂时表示不修复该漏洞

不要将Apache Solr开放在公网或配置Solr身份校验。

配置Solr身份校验:在security.json启用身份验证插件,代码示例:

    {"authentication" : {"class":"class.that.implements.authentication" },"authorization": {"class":"class.that.implements.authorization" }}

    在SolrCloud模式下需要将security.json上传到ZooKeeper。以下命令在上传文件时将其写入文件:

      >server/scripts/cloud-scripts/zkcli.sh -zkhost localhost:2181 -cmd put /security.json "{"authentication":{"class":"org.apache.solr.security.KerberosPlugin"}}"

      在独立模式下需要创建security.json并将其放在$SOLR_HOME安装目录中。

      参考链接:https://solr.apache.org/guide/6_6/authentication-and-authorization-plugins.html

      参考资料

      [1]https://mp.weixin.qq.com/s/3WuWUGO61gM0dBpwqTfenQ

      声明:本文来自奇安信 CERT,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。