Recherche sur les vulnérabilités de désérialisation d'Apache Dubbo
Ce dépôt contient des documents de recherche, du code de preuve de concept et des outils d'exploitation liés aux vulnérabilités de désérialisation d'Apache Dubbo, principalement axés sur CVE-2020-1948.
Structure du dépôt
Répertoires
- Hessian-Deserialize-RCE-master : Techniques de recherche et d'exploitation des vulnérabilités de désérialisation Hessian dans Dubbo
- JNDI-Injection-Exploit-master : Framework d'exploitation par injection JNDI pour attaquer les services Dubbo
- dubbo-dubbo-2.7.5 : Code source d'Apache Dubbo 2.7.5 pour l'analyse des vulnérabilités
- dubbo-exp-master : Framework d'exploitation avancé pour les vulnérabilités Dubbo
- dubbo-samples-master : Exemples d'applications Dubbo pour les tests et la démonstration
- marshalsec-master : Outils de test de vulnérabilité de marshalling/unmarshalling
Fichiers
- dubboExp.py : Script d'exploitation en Python pour CVE-2020-1948
- dubboPoc.py : Script de preuve de concept pour vérifier l'existence de la vulnérabilité
- payload.ser : Charge utile Java sérialisée pour l'exploitation
- ysoserial.jar : Outil de génération de charge utile de désérialisation Java
Aperçu de la vulnérabilité
Les versions d'Apache Dubbo antérieures à 2.7.8, 2.6.9 et 2.5.10 sont vulnérables à une attaque par exécution de code à distance (CVE-2020-1948) en raison d'une désérialisation non sécurisée. La vulnérabilité affecte le composant Dubbo Provider, qui utilise la sérialisation native Java sans validation appropriée.
Détails techniques
Cette vulnérabilité peut être exploitée via plusieurs vecteurs :
- Désérialisation Hessian : Exploitation de l'implémentation du protocole de sérialisation Hessian
- Injection JNDI : Utilisation des techniques d'injection JNDI pour parvenir à une exécution de code à distance
- Sérialisation Java : Utilisation d'attaques classiques de désérialisation Java avec des chaînes de gadgets
Utilisation
Configuration de l'environnement vulnérable
# Clone and build a vulnerable Dubbo version
cd dubbo-dubbo-2.7.5
mvn clean package
Vérification de la vulnérabilité
# 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"
Génération de charge utile personnalisée
Vous pouvez utiliser ysoserial.jar pour générer des charges utiles personnalisées :
java -jar ysoserial.jar CommonsCollections1 "command_to_execute" > payload.ser
Mesures d'atténuation
Pour se protéger contre ces vulnérabilités :
- Mettez à niveau vers Apache Dubbo 2.7.8+, 2.6.9+ ou 2.5.10+
- Évitez d'utiliser la sérialisation native Java
- Mettez en œuvre une validation d'entrée appropriée et un filtrage de la désérialisation
- Envisagez d'utiliser des protocoles de sérialisation alternatifs avec des contrôles de sécurité appropriés
Références
Avertissement
Ce dépôt est destiné uniquement à la recherche en sécurité et à des fins éducatives. Le code et les outils fournis ne doivent être utilisés que contre des systèmes pour lesquels vous avez l'autorisation de tester. Toute utilisation abusive de ces informations n'engage pas la responsabilité du propriétaire du dépôt.