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

编号

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生效。长期储备攻击手段,了解目标主流技术栈的基本后端业务,攻击才能越来也熟练和自信。

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

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

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

poc

type="JdbcDataSource"

driver="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost:3306/mysql"

user="root"

password="123456"/>

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

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,作为同类型漏洞挖掘的知识储备。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值