Investigación de Vulnerabilidad de Deserialización en Apache Dubbo
Este repositorio contiene materiales de investigación, código de prueba de concepto y herramientas de explotación relacionadas con vulnerabilidades de deserialización en Apache Dubbo, centrándose principalmente en CVE-2020-1948.
Estructura del Repositorio
Directorios
- Hessian-Deserialize-RCE-master: Técnicas de investigación y explotación para vulnerabilidades de deserialización Hessian en Dubbo
- JNDI-Injection-Exploit-master: Marco de explotación de inyección JNDI para atacar servicios Dubbo
- dubbo-dubbo-2.7.5: Código fuente de Apache Dubbo 2.7.5 para análisis de vulnerabilidades
- dubbo-exp-master: Marco de explotación avanzado para vulnerabilidades de Dubbo
- dubbo-samples-master: Aplicaciones de muestra de Dubbo para pruebas y demostración
- marshalsec-master: Herramientas para pruebas de vulnerabilidades de marshalling/unmarshalling
Archivos
- dubboExp.py: Script de explotación basado en Python para CVE-2020-1948
- dubboPoc.py: Script de prueba de concepto para verificar la existencia de la vulnerabilidad
- payload.ser: Carga útil Java serializada para explotación
- ysoserial.jar: Herramienta de generación de cargas útiles de deserialización Java
Resumen de la Vulnerabilidad
Las versiones de Apache Dubbo anteriores a 2.7.8, 2.6.9 y 2.5.10 son vulnerables a un ataque de ejecución remota de código (CVE-2020-1948) debido a una deserialización insegura. La vulnerabilidad afecta al componente Dubbo Provider, que utiliza serialización nativa de Java sin una validación adecuada.
Detalles Técnicos
Esta vulnerabilidad puede ser explotada a través de múltiples vectores:
- Deserialización Hessian: Explotando la implementación del protocolo de serialización Hessian
- Inyección JNDI: Aprovechando técnicas de inyección JNDI para lograr ejecución remota de código
- Serialización Java: Usando ataques de deserialización Java tradicionales con cadenas de gadgets
Uso
Configuración del Entorno Vulnerable
# Clone and build a vulnerable Dubbo version
cd dubbo-dubbo-2.7.5
mvn clean package
Verificación de Vulnerabilidad
# Run the proof of concept
python dubboPoc.py -t <target_ip> -p <target_port>
Explotación
# Run the exploit
python dubboExp.py -t <target_ip> -p <target_port> -c "command_to_execute"
Generación de Carga Útil Personalizada
Puede usar ysoserial.jar para generar cargas útiles personalizadas:
java -jar ysoserial.jar CommonsCollections1 "command_to_execute" > payload.ser
Mitigaciones
Para protegerse contra estas vulnerabilidades:
- Actualice a Apache Dubbo 2.7.8+, 2.6.9+ o 2.5.10+
- Evite usar la serialización nativa de Java
- Implemente una validación de entrada y filtrado de deserialización adecuados
- Considere usar protocolos de serialización alternativos con controles de seguridad apropiados
Referencias
Descargo de Responsabilidad
Este repositorio es solo para fines de investigación de seguridad y educativos. El código y las herramientas proporcionados solo deben usarse contra sistemas para los que tenga permiso de prueba. Cualquier uso indebido de esta información no es responsabilidad del propietario del repositorio.