Ricerca sulla vulnerabilità di deserializzazione di Apache Dubbo
Questo repository contiene materiali di ricerca, codice proof-of-concept e strumenti di exploitation relativi alle vulnerabilità di deserializzazione di Apache Dubbo, concentrandosi principalmente su CVE-2020-1948.
Struttura del repository
Directory
- Hessian-Deserialize-RCE-master: Ricerca e tecniche di exploitation per vulnerabilità di deserializzazione Hessian in Dubbo
- JNDI-Injection-Exploit-master: Framework di exploitation per iniezione JNDI per attaccare servizi Dubbo
- dubbo-dubbo-2.7.5: Codice sorgente di Apache Dubbo 2.7.5 per analisi delle vulnerabilità
- dubbo-exp-master: Framework di exploitation avanzato per vulnerabilità Dubbo
- dubbo-samples-master: Applicazioni Dubbo di esempio per test e dimostrazione
- marshalsec-master: Strumenti per test di vulnerabilità di marshalling/unmarshalling
File
- dubboExp.py: Script di exploit basato su Python per CVE-2020-1948
- dubboPoc.py: Script proof-of-concept per verificare l'esistenza della vulnerabilità
- payload.ser: Payload Java serializzato per exploitation
- ysoserial.jar: Strumento per la generazione di payload di deserializzazione Java
Panoramica della vulnerabilità
Le versioni di Apache Dubbo precedenti alla 2.7.8, 2.6.9 e 2.5.10 sono vulnerabili a un attacco di esecuzione remota di codice (CVE-2020-1948) a causa di una deserializzazione non sicura. La vulnerabilità colpisce il componente Dubbo Provider, che utilizza la serializzazione nativa Java senza una corretta validazione.
Dettagli tecnici
Questa vulnerabilità può essere sfruttata attraverso molteplici vettori:
- Hessian Deserialization: Sfruttamento dell'implementazione del protocollo di serializzazione Hessian
- JNDI Injection: Sfruttamento delle tecniche di iniezione JNDI per ottenere esecuzione remota di codice
- Java Serialization: Utilizzo di attacchi di deserializzazione Java tradizionali con gadget chain
Utilizzo
Configurazione dell'ambiente vulnerabile
# Clone and build a vulnerable Dubbo version
cd dubbo-dubbo-2.7.5
mvn clean package
Verifica della vulnerabilità
# Run the proof of concept
python dubboPoc.py -t <target_ip> -p <target_port>
Exploitation
# Run the exploit
python dubboExp.py -t <target_ip> -p <target_port> -c "command_to_execute"
Generazione di payload personalizzati
Puoi utilizzare ysoserial.jar per generare payload personalizzati:
java -jar ysoserial.jar CommonsCollections1 "command_to_execute" > payload.ser
Mitigazioni
Per proteggersi da queste vulnerabilità:
- Aggiornare ad Apache Dubbo 2.7.8+, 2.6.9+ o 2.5.10+
- Evitare l'uso della serializzazione nativa Java
- Implementare una corretta validazione dell'input e filtraggio della deserializzazione
- Considerare l'utilizzo di protocolli di serializzazione alternativi con adeguati controlli di sicurezza
Riferimenti
Dichiarazione di non responsabilità
Questo repository è destinato esclusivamente a scopi di ricerca sulla sicurezza e didattici. Il codice e gli strumenti forniti devono essere utilizzati solo contro sistemi che si ha il permesso di testare. Qualsiasi uso improprio di queste informazioni non è responsabilità del proprietario del repository.