记录黑客技术中优秀的内容,传播黑客文化,分享黑客技术精华

【最新漏洞预警】CVE-2021-2471-MySQL JDBC XXE漏洞分析与概念验证

2021-10-22 09:34

漏洞概述

MySQL JDBC是Oracle开发的针对MySQL数据库操作的统一接口。近日网上爆出了MySQL JDBC存在XXE漏洞,漏洞编号为CVE-2021-2471,影响MySQL JDBC v8.0.27版本之前版本。看到漏洞信息后,第一时间查看了相关信息,官方把漏洞复现部分打上了马赛克,在对该漏洞进行简单分析后,发现整个过程其实比较简单,自己做了一个概念验证,这里分享给大家。

漏洞分析

0x01 环境构建

构建研究环境,分别下载MySQL JDBC v8.0.26和MySQL JDBC v8.0.27两个版本。

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency>    <groupId>mysql</groupId>    <artifactId>mysql-connector-java</artifactId>    <version>8.0.26</version></dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId>    <version>8.0.27</version></dependency>

0x02 补丁对比

既然是XXE漏洞,那么我们可以重点关注处理XML的部分,通过分析定位`com.mysql.cj.jdbc.MysqlSQLXML#getSource`函数:

v8.0.27版本在XML处理前设置一堆setFeature来防止出现XXE漏洞。

0x03 构造分析

切换为v8.0.26版本,`com.mysql.cj.jdbc.MysqlSQLXML`类继承于`SQLXML`,查阅关于`SQLXML`的一些用法:

sqlxml
https://docs.oracle.com/javase/tutorial/jdbc/basics/sqlxml.htm

实例化`Connection`数据库连接对象,通过`createSQLXML`函数创建一个`SQLXML`对象:

调用`SQLXML#setString`函数完成`stringRep`变量赋值:

然后查看漏洞函数`getSource`:

当输入参数为`DOMSource.class`时,`stringRep`会被带入并完成XML解析,从而导致出现XXE漏洞。

概念验证


由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用本人负责,文章作者不为此承担任何责任。


知识来源: https://www.wangan.com/p/7fygfy0a463b102d

阅读:133133 | 评论:0 | 标签:漏洞 CVE SQL xxe 分析

想收藏或者和大家分享这篇好文章→复制链接地址

“【最新漏洞预警】CVE-2021-2471-MySQL JDBC XXE漏洞分析与概念验证”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

永久免费持续更新精选优质黑客技术文章Hackdig,帮你成为掌握黑客技术的英雄

求投资、赞助、支持💖

标签云