中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MyBatis遠程代碼執行漏洞CVE-2020-26945的實例分析

發布時間:2021-12-22 23:52:02 來源:億速云 閱讀:675 作者:柒染 欄目:網絡管理

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。 在滿足以下三個條件的時候,攻擊者可以觸發遠程代碼執行:

  • 用戶啟用了內置的二級緩存

  • 用戶未設置JEP-290過濾器

  • 攻擊者找到了一種修改私有Map字段條目的方法,即修改org.apache.ibatis.cache.impl.PerpetualCache.cache有效的緩存密鑰

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的實例分析的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广州市| 宁城县| 色达县| 绥中县| 临城县| 本溪市| 公主岭市| 会昌县| 平阳县| 兴仁县| 河西区| 蒙山县| 洱源县| 迁安市| 太仆寺旗| 定陶县| 德昌县| 雷山县| 通海县| 清镇市| 连平县| 京山县| 延寿县| 清原| 雷州市| 安徽省| 延庆县| 陆川县| 四子王旗| 双辽市| 安仁县| 东城区| 云梦县| 那曲县| 鞍山市| 民权县| 任丘市| 新野县| 田阳县| 措勤县| 弥勒县|