安全扫描失败无法上传_Apache Solr 未授权上传(RCE)漏洞的原理分析与验证
漏洞簡(jiǎn)介
Apache Solr 發(fā)布公告,舊版本的ConfigSet API 中存在未授權(quán)上傳漏洞風(fēng)險(xiǎn),被利用可能導(dǎo)致 RCE (遠(yuǎn)程代碼執(zhí)行)。
受影響的版本:
Apache Solr6.6.0 -6.6.5
Apache Solr7.0.0 -7.7.3
Apache Solr8.0.0 -8.6.2
安全專家建議用戶盡快升級(jí)到安全版本,以解決風(fēng)險(xiǎn)。
漏洞原理
Solr 可運(yùn)行在 SolrCloud(分布式集群模式)和 StandaloneServer(獨(dú)立服務(wù)器模式)兩種模式下,當(dāng)以 SolrCloud 模式運(yùn)行時(shí),可通過(guò)Configset API 操作 Configsets,包括創(chuàng)建、刪除等。
對(duì)于通過(guò) Configset API 執(zhí)行 UPLOAD 時(shí),如果啟用了身份驗(yàn)證(默認(rèn)未開啟),且該請(qǐng)求通過(guò)了身份驗(yàn)證,Solr 會(huì)為該 configset 的設(shè)置“trusted”,否則該配置集不會(huì)被信任,不被信任的 configset 無(wú)法創(chuàng)建collection。
但當(dāng)攻擊者通過(guò) UPLOAD 上傳 configset 后,再基于此configsetCREATE configset 時(shí),Solr 不會(huì)為這個(gè)新的 configset 進(jìn)行信任檢查,導(dǎo)致可以使用未經(jīng)信任檢查的新 configset 創(chuàng)建 collection。
漏洞驗(yàn)證
一、在8.6.2版本中進(jìn)行攻擊嘗試
1、Debug 運(yùn)行8.6.2版本,默認(rèn)開啟在8983端口
2、使用樣例構(gòu)造上傳的 configset
3、上傳過(guò)程中觸發(fā)斷點(diǎn)
可以看到,正確識(shí)別到 configset 不值得信任(缺少身份認(rèn)證)
Trust 值為 false
4、 使用上傳的 configset 為母版,創(chuàng)建新的 configset
http://localhost:8983/solr/admin/configs?action=CREATE&name=evilconfigset4&baseConfigSet=2testConfigSet&configSetProp.immutable=false&wt=xml&omitHeader=true
無(wú)返回信息,未觸發(fā) debug
5、 在 web 控制臺(tái)可以查看到,創(chuàng)建 evilconfigset4 成功
6、 使用直接上傳的 configset(例如2testconfigset)創(chuàng)建 collection 會(huì)失敗
7、 使用以 2testconfigset 為母版創(chuàng)建的 evilconfigset4,創(chuàng)建collection,可以成功
8、 后續(xù)可以利用創(chuàng)建的 collection 的內(nèi)容,調(diào)用solr組件進(jìn)行遠(yuǎn)程代碼執(zhí)行(這里不做分析)
二、 8.6.3 版本修復(fù)分析
1、 Debug 運(yùn)行 8.6.3 版本
2、進(jìn)行攻擊嘗試,類似 8.6.2 版本,上傳 configset
3、觸發(fā)斷點(diǎn)
正確識(shí)別為不可信 configset
4、 使用上傳的 2testconfigset 為母版,創(chuàng)建新的 configset
http://localhost:8983/solr/admin/configs?action=CREATE&name=evilconfigset4&baseConfigSet=2testConfigSet&configSetProp.immutable=false&wt=xml&omitHeader=true
5、觸發(fā)斷點(diǎn)
正確識(shí)別為不可信 configset(注意,在8.6.2版本中,以已上傳的 configset 為母版創(chuàng)建新 configset 時(shí),并不會(huì)觸發(fā)檢查)
6、同樣可以創(chuàng)建 configset 成功
7、 在 web 控制臺(tái),分別使用直接上傳的 configset(2testconfigset)以及創(chuàng)建的(evilconfigset4)新建 collection
2testconfigset:
Evilconfigset4 :
均創(chuàng)建失敗。
參考
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 特權(quán)提升漏洞(CVE-2020-1472)原理分析與驗(yàn)證
QEMU CVE-2020-14364 漏洞分析(含 PoC 演示)
題圖:Pixabay License
本文由奇安信代碼安全實(shí)驗(yàn)室原創(chuàng)。轉(zhuǎn)載請(qǐng)注明“轉(zhuǎn)自奇安信代碼衛(wèi)士 https://codesafe.qianxin.com”。
精彩推薦
總結(jié)
以上是生活随笔為你收集整理的安全扫描失败无法上传_Apache Solr 未授权上传(RCE)漏洞的原理分析与验证的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java中strictfp么意思_什么时
- 下一篇: oracle 11g安装时设密码 dat