freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Apache Solr 未授权上传(RCE)漏洞(CVE-2020-13957)的原理分析与验证
2020-10-16 15:53:57

漏洞简介

Apache Solr 发布公告,旧版本的ConfigSet API 中存在未授权上传漏洞风险,被利用可能导致 RCE (远程代码执行)。

受影响的版本:

  • Apache Solr6.6.0 -6.6.5

  • Apache Solr7.0.0 -7.7.3

  • Apache Solr8.0.0 -8.6.2

安全专家建议用户尽快升级到安全版本,以解决风险。

漏洞原理

Solr 可运行在 SolrCloud(分布式集群模式)和 StandaloneServer(独立服务器模式)两种模式下,当以 SolrCloud 模式运行时,可通过Configset API 操作 Configsets,包括创建、删除等。

对于通过 Configset API 执行 UPLOAD 时,如果启用了身份验证(默认未开启),且该请求通过了身份验证,Solr 会为该 configset 的设置“trusted”,否则该配置集不会被信任,不被信任的 configset 无法创建collection。

但当攻击者通过 UPLOAD 上传 configset 后,再基于此configsetCREATE configset 时,Solr 不会为这个新的 configset 进行信任检查,导致可以使用未经信任检查的新 configset 创建 collection。

漏洞验证

一、在8.6.2版本中进行攻击尝试

1、Debug 运行8.6.2版本,默认开启在8983端口

1602834513_5f89505156dc6a9628543.png!small?1602834513530

2、使用样例构造上传的 configset1602834520_5f8950589e1f222d06420.png!small?1602834520859

3、上传过程中触发断点

1602834530_5f8950620a2e4be901135.png!small?1602834530313

可以看到,正确识别到 configset 不值得信任(缺少身份认证)

1602834540_5f89506c327ebd68dccf3.png!small?1602834540457

Trust 值为 false

1602834548_5f8950748843b264364bf.png!small?1602834548872

4、 使用上传的 configset 为母版,创建新的 configset

http://localhost:8983/solr/admin/configs?action=CREATE&name=evilconfigset4&baseConfigSet=2testConfigSet&configSetProp.immutable=false&wt=xml&omitHeader=true

1602834559_5f89507f2a95e01ba48b0.png!small?1602834559351

无返回信息,未触发 debug

5、 在 web 控制台可以查看到,创建 evilconfigset4 成功

1602834569_5f895089c3c9db7645087.png!small?1602834570070

6、 使用直接上传的 configset(例如2testconfigset)创建 collection 会失败

1602834577_5f89509175c08cbd00f2f.png!small?1602834577679

1602834586_5f89509a5460d4a3cc99d.png!small?1602834586569

7、 使用以 2testconfigset 为母版创建的 evilconfigset4,创建collection,可以成功

1602834593_5f8950a140bf1c286ff2c.png!small?1602834593673

8、 后续可以利用创建的 collection 的内容,调用solr组件进行远程代码执行(这里不做分析)

二、 8.6.3 版本修复分析

1、 Debug 运行 8.6.3 版本

1602834601_5f8950a9eaa9190dba9a7.png!small?1602834602264

2、进行攻击尝试,类似 8.6.2 版本,上传 configset

1602834611_5f8950b3407bc56336adc.png!small?1602834611488

3、触发断点

1602834619_5f8950bbb8bf62b7ea408.png!small?1602834620108

正确识别为不可信 configset

1602834628_5f8950c4c5baf420d22c6.png!small?1602834629208

1602834636_5f8950ccade1f74dad800.png!small?1602834637036

4、 使用上传的 2testconfigset 为母版,创建新的 configset

http://localhost:8983/solr/admin/configs?action=CREATE&name=evilconfigset4&baseConfigSet=2testConfigSet&configSetProp.immutable=false&wt=xml&omitHeader=true

5、触发断点

1602834646_5f8950d6474b11e337d9b.png!small?1602834646550

正确识别为不可信 configset(注意,在8.6.2版本中,以已上传的 configset 为母版创建新 configset 时,并不会触发检查)

1602834653_5f8950dd66ca8b5412d52.png!small?1602834653712

6、同样可以创建 configset 成功

1602834662_5f8950e64588344369df4.png!small?1602834662430

7、 在 web 控制台,分别使用直接上传的 configset(2testconfigset)以及创建的(evilconfigset4)新建 collection

2testconfigset:

1602834669_5f8950edb9843e3fdaf9a.png!small?1602834669988

1602834678_5f8950f661a8b33e14974.png!small?1602834678801

Evilconfigset4 :

1602834685_5f8950fd2dc48b049ceb6.png!small?1602834685379

1602834692_5f895104a0de94303c7ce.png!small?1602834692953

均创建失败。

参考

  • 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

推荐阅读

Netlogon 特权提升漏洞(CVE-2020-1472)原理分析与验证

QEMU CVE-2020-14364 漏洞分析(含 PoC 演示)

题图:Pixabay License

本文由奇安信代码安全实验室原创。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。

# Apache Solr
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录