补天情报首发:Apache Solr 未授权上传(RCE)漏洞(CVE-2020-13957)风险通告原理分析与验证
codesafe [补天平台](javascript:void(0)😉 今天
漏洞简介
Apache Solr 发布公告,旧版本的 ConfigSet API 中存在未授权上传漏洞风险,被利用可能导致 RCE (远程代码执行)。
受影响的版本
Apache Solr 6.6.0 -6.6.5
Apache Solr 7.0.0 -7.7.3
Apache Solr 8.0.0 -8.6.2
安全专家建议用户尽快升级到安全版本,以解决风险。
漏洞原理
Solr可运行在SolrCloud(分布式集群模式)和Standalone Server(独立服务器模式)两种模式下,当以SolrCloud模式运行时,可通过Configset API 操作Configsets,包括创建、删除等。
对于通过Configset API 执行UPLOAD时,如果启用了身份验证(默认未开启),且该请求通过了身份验证,Solr会为该configset的设置“trusted”,否则该配置集不会被信任,不被信任的configset无法创建collection。
但当攻击者通过UPLOAD上传configset后,再基于此configset CREATE configset时,Solr不会为这个新的configset进行信任检查,导致可以使用未经信任检查的新configset创建collection。
漏洞验证
一.在8.6.2版本中进行攻击尝试
1.Debug运行8.6.2版本,默认开启在8983端口
2.使用样例构造上传的configset
3.上传过程中触发断点
可以看到,正确识别到configset不值得信任(缺少身份认证)
Trust值为false
4.使用上传的configset为母版,创建新的configset
http://localhost:8983/solr/admin/configs?action=CREATE&name=evilconfigset4&baseConfigSet=2testConfigSet&configSetProp.immutable=false&wt=xml&omitHeader=true
无返回信息,未触发debug
5.在web控制台可以查看到,创建evilconfigset4成功
6.使用直接上传的configset(例如2testconfigset)创建collection会失败
7.使用以2testconfigset为母版,创建的evilconfigset4,创建collection,可以成功
8.后续可以利用创建的collection的内容,调用solr组件进行远程代码执行(这里不做分析)
二.8.6.3 版本修复分析
1.Debug运行8.6.3版本
2.进行攻击尝试,类似8.6.2版本,上传configset
3.触发断点
正确识别为不可信configset
4.使用上传的2testconfigset为母版,创建新的configset
http://localhost:8983/solr/admin/configs?action=CREATE&name=evilconfigset4&baseConfigSet=2testConfigSet&configSetProp.immutable=false&wt=xml&omitHeader=true
5.触发断点
正确识别为不可信configset(注意,在8.6.2版本中,以已上传的configset为母版创建新configset时,并不会触发检查)
6.同样可以创建configset成功
7.在web控制台,分别使用直接上传的configset(2testconfigset)以及创建的(evilconfigset4)新建collection
2testconfigset :
Evilconfigset4 :
均创建失败。
参考
https://issues.apache.org/jira/secure/attachment/13012410/SOLR-14663.patch
https://issues.apache.org/jira/browse/SOLR-14663
https://github.com/apache/lucene-solr/commit/8f2f80bbb3c35fef036dce3162f4f03bf465e5f2
转载自https://mp.weixin.qq.com/s/XYLJwjOe8yhPhBhGTy59qw
相关文章
- 压力测试工具ab - Apache HTTP server benchmarking tool
- 实战,利用apache来做集群,实现负载均衡
- CVE-2021-36749 Apache Druid LoadData 任意文件读取漏洞
- 开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
- CVE-2020-9497/9498: Apache Guacamole 网关远程代码执行漏洞通告
- CVE-2020-1948: Apache Dubbo 远程代码执行漏洞通告
- Apache Solr 远程命令执行漏洞(CVE-2019-0193)
- Apache Commons Configuration远程代码执行漏洞(CVE-2022-33980)分析&复现
- Apache Curator与Zookeeper版本兼容性异常:org.apache.zookeeper.KeeperException$UnimplementedException: KeeperErrorCode =Unimplemented
- Benchmarking Apache Kafka, Apache Pulsar, and RabbitMQ: Which is the Fastest?
- A Deep Dive into Rescalable State in Apache Flink
- Apache NiFi之MySQL数据同步到HBase
- Springboot-001-解决nested exception is org.apache.ibatis.binding.BindingException: Parameter 'env' not found. Available parameters are [arg1, arg0, param1, param2]
- apache添加php支持
- apache jserv漏洞Apache漏洞
- 2022年7月7日热点分享:Apache 多个组件漏洞公开(CVE-2022-32533),赶紧查看你负责的代码是否中招?
- 补丁失效!关键Apache Struts漏洞仍被大量利用
- apache开源项目--kylin
- apache开源项目--Apache Commons Imaging
- 【Hive】Apache Hive系列之Hive中表的操作
- Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quick