Pesquisa sobre Vulnerabilidade de Desserialização no Apache Dubbo
Este repositório contém materiais de pesquisa, código de prova de conceito e ferramentas de exploração relacionadas a vulnerabilidades de desserialização do Apache Dubbo, focando principalmente no CVE-2020-1948.
Estrutura do Repositório
Diretórios
- Hessian-Deserialize-RCE-master: Técnicas de pesquisa e exploração para vulnerabilidades de desserialização Hessian no Dubbo
- JNDI-Injection-Exploit-master: Framework de exploração de injeção JNDI para atacar serviços Dubbo
- dubbo-dubbo-2.7.5: Código fonte do Apache Dubbo 2.7.5 para análise de vulnerabilidade
- dubbo-exp-master: Framework avançado de exploração para vulnerabilidades Dubbo
- dubbo-samples-master: Aplicações Dubbo de exemplo para teste e demonstração
- marshalsec-master: Ferramentas para teste de vulnerabilidade de marshalling/unmarshalling
Arquivos
- dubboExp.py: Script de exploração baseado em Python para CVE-2020-1948
- dubboPoc.py: Script de prova de conceito para verificar a existência da vulnerabilidade
- payload.ser: Payload Java serializado para exploração
- ysoserial.jar: Ferramenta de geração de payload de desserialização Java
Visão Geral da Vulnerabilidade
As versões do Apache Dubbo anteriores a 2.7.8, 2.6.9 e 2.5.10 são vulneráveis a um ataque de execução remota de código (CVE-2020-1948) devido à desserialização insegura. A vulnerabilidade afeta o componente Dubbo Provider, que utiliza serialização nativa Java sem validação adequada.
Detalhes Técnicos
Esta vulnerabilidade pode ser explorada através de múltiplos vetores:
- Desserialização Hessian: Explorando a implementação do protocolo de serialização Hessian
- Injeção JNDI: Utilizando técnicas de injeção JNDI para obter execução remota de código
- Serialização Java: Usando ataques tradicionais de desserialização Java com cadeias de gadget
Uso
Configurar Ambiente Vulnerável
# Clone and build a vulnerable Dubbo version
cd dubbo-dubbo-2.7.5
mvn clean package
Verificação de Vulnerabilidade
# Run the proof of concept
python dubboPoc.py -t <target_ip> -p <target_port>
Exploração
# Run the exploit
python dubboExp.py -t <target_ip> -p <target_port> -c "command_to_execute"
Geração de Payload Personalizado
Você pode usar o ysoserial.jar para gerar payloads personalizados:
java -jar ysoserial.jar CommonsCollections1 "command_to_execute" > payload.ser
Mitigações
Para se proteger contra essas vulnerabilidades:
- Atualize para Apache Dubbo 2.7.8+, 2.6.9+ ou 2.5.10+
- Evite usar serialização nativa Java
- Implemente validação de entrada adequada e filtragem de desserialização
- Considere usar protocolos de serialização alternativos com controles de segurança adequados
Referências
Aviso Legal
Este repositório é apenas para fins de pesquisa de segurança e educacionais. O código e as ferramentas fornecidos devem ser usados apenas contra sistemas que você tem permissão para testar. Qualquer uso indevido destas informações não é de responsabilidade do proprietário do repositório.