Apache ShardingShpere(CVE-2020-1947)漏洞分析

栏目: IT技术 · 发布时间: 5年前

内容简介:2020年3月9日,Apache官方修复了一处由奇安信云影实验室maoge发现并提交的远程代码执行漏洞CVE-2020-1947。成功利用此漏洞,可以执行任意代码,完全控制目标主机。目前,该漏洞的利用POC已被公开。Apache ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Ja

2020年3月9日,Apache官方修复了一处由奇安信云影实验室maoge发现并提交的远程代码执行漏洞CVE-2020-1947。成功利用此漏洞,可以执行任意代码,完全控制目标主机。目前,该漏洞的利用POC已被公开。

Apache ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如 Java 同构、异构语言、云原生等各种多样化的应用场景。ShardingSphere在解析snakeyaml的时候没有对其进行校验,当存在配置中心,用户提交恶意代码的时候,依然会对此进行解析并反序列化,从而导致恶意代码被执行。此漏洞影响sharding-jdbc,sharding-proxy,sharding-ui等。

0 x01  漏洞验证

一.环境搭建

1.官网下载4.0.0 版本sharding-ui。下载后进入bin目录启动sharding-ui。

使用localhost:8088 admin/admin (默认)进入配置页面。

二.复现

1、首先进入registry center添加一个注册中心。配置如下。

Apache ShardingShpere(CVE-2020-1947)漏洞分析

2、进入rule config 新增一条规则,填入payload,点击commit即可执行命令。

Apache ShardingShpere(CVE-2020-1947)漏洞分析

通过实例化特意的snakeyaml,就可以触发漏洞。

0 x02  漏洞 分析

1.snakeyaml 语法

!!+class 代表实例化一个类。我们可以dump出来看一下。

Apache ShardingShpere(CVE-2020-1947)漏洞分析

刚好我们有ScriptEngineManager类可以接受一个classloader参数,URLClassLoader刚好满足要求来动态加载一个jar。可以通过snakeyaml的语法实例化出payload。

远程加载外置服务器的jar包,其中jar包代码包含如下方法:

public class AwesomeScriptEngineFactory implements ScriptEngineFactory {
public AwesomeScriptEngineFactory() {
try {
Runtime.getRuntime().exec("open /System/Applications/Calculator.app");
} catch (IOException e) {
e.printStackTrace();
}
} ……
}

编译为jar后放置在http服务器。

2. AwesomeScriptEngineFactory 分析

对于上面的AwesomeScriptEngineFactory 类,为什么需要继承ScriptEngineFactory。通过调试可以知道:在此处需要为ScriptEngineFactory类型。命令执行放在构造函数里面,当初始化的时候既会调用。

Apache ShardingShpere(CVE-2020-1947)漏洞分析

3. 漏洞成因

其本质原因是开发者在加载yaml的时候直接unmarshal。没有考虑恶意加载的情况。

Apache ShardingShpere(CVE-2020-1947)漏洞分析

直接通过new Yaml().load()从而导致反序列恶意类。

Apache ShardingShpere(CVE-2020-1947)漏洞分析 4.0.1版本已经对此修复。对比新的补丁文件发现已经新增ClassFilterConstructor来对此进行过滤。

Apache ShardingShpere(CVE-2020-1947)漏洞分析

Apache ShardingShpere(CVE-2020-1947)漏洞分析

搜索unmarshal的地方非常多。对于acceptClasses做了很强的限制。

Apache ShardingShpere(CVE-2020-1947)漏洞分析


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C++编程风格

C++编程风格

卡吉尔 / 聂雪军 / 机械工业出版社发行室 / 2007-1 / 25.00元

本书描述C++语言中较深层次的程序设计思想和使用方法,包含大量软件工程概念和设计模式,重点介绍大规模编程相关的内容,例如增加代码的可读性、可维护性、可扩展性以及执行效率等的方法。本书的示例代码都是从实际程序中抽取出来的,融人了作者的实际开发经验。讲解如何正确地编写代码以及避开一些常见的误区和陷阱,并给出了许多实用的编程规则,可快速提升读者的C++编程功力。   本书描述平实,示例丰富,适合有......一起来看看 《C++编程风格》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具