如何进行Apache ShardingShpere CVE-2020-1947漏洞的分析


本篇文章给大家分享的是有关如何进行Apache ShardingShpere CVE-2020-1947漏洞的分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。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等。1.官网下载4.0.0 版本sharding-ui。下载后进入bin目录启动sharding-ui。使用localhost:8088 admin/admin (默认)进入配置页面。1、首先进入registry center添加一个注册中心。配置如下。2、进入rule config 新增一条规则,填入payload,点击commit即可执行命令。通过实例化特意的snakeyaml,就可以触发漏洞。!!+class 代表实例化一个类。我们可以dump出来看一下。刚好我们有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服务器。对于上面的AwesomeScriptEngineFactory 类,为什么需要继承ScriptEngineFactory。通过调试可以知道:在此处需要为ScriptEngineFact免费云主机域名ory类型。命令执行放在构造函数里面,当初始化的时候既会调用。其本质原因是开发者在加载yaml的时候直接unmarshal。没有考虑恶意加载的情况。直接通过new Yaml().load()从而导致反序列恶意类。4.0.1版本已经对此修复。对比新的补丁文件发现已经新增ClassFilterConstructor来对此进行过滤。搜索unmarshal的地方非常多。对于acceptClasses做了很强的限制。目前,Apache官方已发布新的版本4.0.1,请尽快升级到官方最新版本。https://github.com/apache/incubator-shardingsphere/releases
以上就是如何进行Apache ShardingShpere CVE-2020-1947漏洞的分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注云编程开发博客行业资讯频道。

相关推荐: 如何看待RPA+AI

如何看待RPA+AI,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。数字化业务的成熟,离不开新技术的迭代与发展。而在这些新技术当中,人工智能(AI)和机器人流程自动化(RPA)对于企业的长远发展,意…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 02/05 08:46
Next 02/05 08:49