MyBatis远程代码执行漏洞CVE-2020-26945的实例分析

发布时间:2021-12-22 23:52:02 作者:柒染
来源:亿速云 阅读:629

MyBatis远程代码执行漏洞CVE-2020-26945的实例分析,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

一、漏洞概要

漏洞名称

MyBatis 远程代码执行漏洞CVE-2020-26945

威胁等级

高危

影响范围

MyBatis < 3.5.6

漏洞类型

远程代码执行

利用难度

困难

二、漏洞分析

2.1 MyBatis组件介绍

MyBatis 本是Apache的一个开源项目iBatis, 2010年这个项目由Apache Software Foundation 迁移到了Google Code,并且改名为MyBatis 。MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

2.2 漏洞描述

2020年10月6日,MyBatis官方发布了MyBatis 3.5.6版本,修复了一个远程代码执行漏洞,该漏洞编号为CVE-2020-26945。 在满足以下三个条件的时候,攻击者可以触发远程代码执行:

2.3 漏洞分析

官方发布修复此漏洞的方法是添加了反序列化检查,通过补丁比较发现漏洞点:

MyBatis远程代码执行漏洞CVE-2020-26945的实例分析

漏洞点出现在SerializedCache类的私有方法deserialize()中,全局搜索此类,发现该类公有的getObject()方法调用了该私有方法:

MyBatis远程代码执行漏洞CVE-2020-26945的实例分析

在该方法设置断点,跟进发现进入了ScheduledCache类的getObject()方法:

MyBatis远程代码执行漏洞CVE-2020-26945的实例分析MyBatis远程代码执行漏洞CVE-2020-26945的实例分析

这里可以看到getObject()方法调用了clearWhenStale()方法,是对cache是否过期进行判断,并不是任意序列化数据均可以进行反序列化:

MyBatis远程代码执行漏洞CVE-2020-26945的实例分析

getObject()这里的限制主要有两处,一是需要在cache的过期时间内,二是覆盖的value要和key相对应,也就是前面漏洞描述提到的漏洞利用须满足的第三个条件。继续跟进发现序列化数据就是Cache.value,取出value值是通过<key-value>的对应关系,这是在MyBatis默认二级缓存类PerpetualCache实现的(用户可以自定义二级缓存,在mapper中启用即可,前提是实现规定的接口):

MyBatis远程代码执行漏洞CVE-2020-26945的实例分析

作为攻击者,需要将已有key对应的value覆盖为自己的恶意序列化数据,在cache过期时间内,如果再次执行相同的查询访问操作,恶意数据就会被作为已有key的对应value被反序列化,从而形成MyBatis所在服务器上的RCE。

2.4 漏洞复现

攻击者可以造成远程代码执行:

MyBatis远程代码执行漏洞CVE-2020-26945的实例分析

三、影响范围

目前受影响的MyBatis版本:

Mybatis < 3.5.6

四、解决方案

4.1修复建议

目前厂商已发布升级补丁以修复漏洞,请受影响用户尽快进行升级加固。补丁获取链接:

https://github.com/mybatis/mybatis-3

看完上述内容,你们掌握MyBatis远程代码执行漏洞CVE-2020-26945的实例分析的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

推荐阅读:
  1. ThinkPHP远程代码执行漏洞是什么样的
  2. Windows远程代码执行漏洞及Microsoft Excel远程代码执行漏洞的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mybatis

上一篇:如何进行CVE 2020-14841 WebLogic JNDI注入绕过的分析

下一篇:mysql中出现1053错误怎么办

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》