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

VSole2021-10-21 22:48:40

漏洞概述

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漏洞。

概念验证


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

mysqljdbc
本作品采用《CC 协议》,转载必须注明作者和本文链接
MYSQL JDBC XXE漏洞分析
2021-10-26 09:02:17
最近 JDBC爆了一个XXE漏洞,很久没有分析漏洞了,趁着周末没事分析下这个漏洞。 分析 10月21日,”阿里云应急响应”公众号发布Oracle Mysql JDBC存在XXE漏洞,造成漏洞的原因主要是因为getSource方法未对传入的XML格式数据进行检验。导致攻击者可构造恶意的XML数据引入外部实体。造成XXE攻击。
阿里云安全团队向Oracle官方报告了MySQL JDBC XXE漏洞
近日,安识科技A-Team团队监测到一则Oracle MySQL组件在JDBC过程中存在XML外部实体注入漏洞的信息,当前官方已发布受影响的补丁。 对此,安识科技建议广大用户及时升级到安全版本,并做好资产自查以及预防工作,以免遭受黑客攻击。
漏洞概述MySQL JDBC是Oracle开发的针对MySQL数据库操作的统一接口。近日网上爆出了MySQL JDBC存在XXE漏洞,漏洞编号为CVE-2021-2471,影响MySQL JDBC v8.0.27版本之前版本。
假设Mysql中canal_test库下有一张表policy_cred,需要统计实时统计policy_status状态为1的mor_rate的的变化趋势,并标注比率的风险预警等级。?本次安装的canal版本为1.1.2,Canal版本最后在1.1.1之后。server端采用MQ模式,MQ选用Kafka。服务器系统为Centos
前言作为一个资深后端码农天天都要和数据库打交道,最早使用的是 Hiberate,一个封装性极强的持久性框架。自从接触到 Mybatis 就被它的灵活性所折服了,可以自己写 SQL,虽然轻量级,但是麻雀虽小,五脏俱全。这篇文章就来讲讲什么是 Mybatis,如何简单的使用 Mybatis。
任务模块专注于任务的执行等操作,开发和维护更加简单和高效;接收“调度中心”的执行请求、终止请求和日志请求等。XXL-JOB的不同任务之间并行调度、并行执行。同时支持任务终止。当任务”路由策略”选择”故障转移”时,当调度中心每次发起调度请求时,会按照顺序对执行器发出心跳检测请求,第一个检测为存活状态的执行器将会被选定并发送调度请求。
经常会遇到这样一种情况:项目的配置文件中总有一些敏感信息,比如数据源的url、用户名、密码....这些信息一旦被暴露那么整个数据库都将会被泄漏,那么如何将这些配置隐藏呢?今天介绍一种方案,让你在无感知的情况下实现配置文件的加密、解密。
前言因工作需要,需要调研WAF和IDS产品,我经过调研选择了Modsecurity作为Web端的防火墙防护软件和Suricata作为tcp和udp层的防护,并且通过logstash将结果输出到elasticsearch中进行分析。
Apache Log4j2是一款优秀的Java日志框架,最近爆出了一个jndi注入的漏洞,影响面非常广,各大厂商都被波及。Log4j2作为日志记录的第三方库,被广泛得到使用,这次主要分享一下,最近的一些调试记录。
VSole
网络安全专家