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。