type
Post
status
Published
date
Dec 12, 2022
slug
summary
tags
漏洞
业务安全
category
漏洞分析
icon
password
Property
Feb 9, 2023 07:24 AM

漏洞描述

Oracle MySQL是美国甲骨文(Oracle)公司的一套开源的关系数据库管理系统。
notion image
Oracle MySQL 的 MySQL Connectors 产品中存在输入验证错误漏洞,该漏洞允许高特权攻击者通过多种协议访问网络来破坏 MySQL 连接器。成功攻击此漏洞会导致对关键数据的未授权访问或对所有 MySQL 连接器可访问数据的完全访问,以及导致 MySQL 连接器挂起或频繁重复崩溃。

影响版本

目前大致范围:MySQL < 8.0.27

环境搭建

notion image
创建数据库、数据表,并设置了特殊的字段属性和字段内容。因为是在ubuntu靶机开启的nc,所以表中内容为xxe外部连接本地的7777端口
create database test; create table tb_test (id bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键id',message text COMMENT 'SQLXML',PRIMARY KEY (`id`)); insert into tb_test(message) value('<?xml version="1.0" ?><!DOCTYPE note [ <!ENTITY % remote SYSTEM "http://127.0.0.1:7777"> %remote; ]>');
为mysql设置外部可访问配置,开启远程连接具体可参考:https://blog.csdn.net/weixin_36586564/article/details/79563875
use mysql; update user set host = ‘%’ where user =’root’; flush privileges;

漏洞复现

接下来在idea中起个poc,poc项目地址:https://github.com/cckuailong/CVE-2021-2471当pom拉取maven不可行的时候,大多数是因为拉去mysql-connector驱动依赖包的问题,可从这里下载并加载进lib中:https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.26
配置好要jdbc连接的地址和数据库账号密码
notion image
经过多次试验终于拿下!
notion image

漏洞成因

该漏洞利用起来比较鸡肋,数据表中需要配置字段相应的xml字段类型且字段内容中存在恶意外部xxe请求payload
根据利用poc中,可以看到存在getSource()方法未对传入的XML数据做校验,导致攻击者可以在XML数据中引入外部实体造成XXE攻击。
进入getSource方法,简单做了判断,当是DOMSource类型时,则使用 DocumentBuilder 对XML数据做解析
notion image
这一步没有做任何安全相关的校验和判断,直接实例化对象,从而可以在XML中引入外部实体,造成XXE攻击
notion image
看到补丁在MySQL JDBC 8.0.27版本开始设置了安全属性在对象实例化之前做了校验
notion image

参考链接

Report a H2-Database-Engine SQLXML XXE vulnerability
Updated Dec 21, 2021
Apache APISIX Dashboard RCE漏洞(CVE-2021-45232)Apache ShenYu Admin身份验证绕过漏洞(CVE-2021-37580)