
Plugin tout-en-un pour Burp Suite pour la détection et l'exploitation des vulnérabilités de désérialisation Java
Java Deserialization Scanner est un plugin Burp Suite visant à détecter et à exploiter les vulnérabilités de désérialisation Java. Il a été écrit par Federico Dotta, analyste sécurité principal chez HN Security.
Le plugin est composé de trois composants distincts :
Un bref article contenant un mini tutoriel sur la façon d'utiliser les différents composants du plugin est disponible à l'URL suivante : https://web.archive.org/web/20201130104913/https://techblog.mediaservice.net/2017/05/reliable-discovery-and-exploitation-of-java-deserialization-vulnerabilities/
Java Deserialization Scanner utilise des payloads personnalisés générés avec une version modifiée de « ysoserial », outil créé par frohoff et gebl, pour détecter les vulnérabilités de désérialisation Java. L'outil original (https://github.com/frohoff/ysoserial) génère des payloads pour l'exécution de commandes sur le système, à l'aide de la fonction Runtime.exec. En général, il n'est toutefois pas possible de voir la sortie de la commande et, par conséquent, il n'est pas simple d'écrire un scanner basé sur ce type de fonction. Pour cette raison, une version modifiée de ysoserial est utilisée pour générer différents types de payloads, utiles pour la détection du problème plutôt que pour son exploitation :
Actuellement, les contrôles passifs de Java Deserialization Scanner signalent la présence d'objets Java sérialisés dans les requêtes HTTP et les contrôles actifs recherchent activement la présence de fonctions de désérialisation faibles en conjonction avec la présence des bibliothèques faibles suivantes :
De plus, le payload URLSNDS a été introduit pour détecter activement la désérialisation Java sans aucune bibliothèque vulnérable. Si le plugin ne trouve que le problème URLDNS (et aucune bibliothèque vulnérable), l'attaquant peut probablement exécuter des attaques par déni de service mais, pour parvenir à une exécution de code à distance, il faut davantage d'efforts. Reportez-vous à ce lien pour plus de détails.
Tous les composants du plugin prennent en charge les encodages suivants :
Dans le dossier test se trouvent quelques applications serveur Java simples qui peuvent être utilisées pour tester le plugin. Chaque application emploie une bibliothèque Java vulnérable différente.
Le plugin offre un onglet dédié pour lancer la détection avec les payloads de sommeil et DNS sur des points d'insertion personnalisés, afin de vérifier les vulnérabilités de désérialisation Java dans des situations particulières où des points d'entrée inhabituels ne permettent pas la détection avec le scanner. Les résultats du testeur manuel peuvent être insérés parmi les résultats du scanner Burp Suite.
Le testeur manuel offre une méthode de détection supplémentaire : la détection CPU. La méthode de détection CPU est basée sur les travaux de Wouter Coekaerts sur SerialDOS (https://gist.github.com/coekie/a27cc406fc9f3dc7a70d) et permet de détecter les problèmes de désérialisation sans la présence d'aucune bibliothèque vulnérable, en utilisant un objet qui consomme de nombreux cycles CPU pour la tâche de désérialisation et en vérifiant le temps de réponse. La méthode de détection CPU n'est pas incluse par défaut dans les contrôles de scan actif, car elle doit être utilisée avec prudence : l'envoi d'un très grand nombre de payloads SerialDOS « légers » peut encore causer des problèmes sur des systèmes anciens ou fortement chargés.
Une fois qu'une vulnérabilité de désérialisation Java a été trouvée, il est possible d'exploiter activement le problème avec l'onglet dédié « Exploiting ». L'onglet « Exploiting » offre une interface conviviale pour exploiter les vulnérabilités de désérialisation. Cet onglet utilise l'outil ysoserial pour générer des vecteurs d'exploitation et inclut le payload généré dans une requête HTTP. ysoserial prend en argument une bibliothèque vulnérable et une commande, puis génère un objet sérialisé sous forme binaire qui peut être envoyé à l'application vulnérable pour exécuter la commande sur le système cible (évidemment si l'application cible est vulnérable). L'onglet « Exploiting » prend en charge les mêmes formats d'encodage que les sections de détection du plugin.

Afin d'améliorer cette extension, veuillez signaler tout problème rencontré dans le plugin. De plus, si vous souhaitez me signaler une bibliothèque Java divulguée utile pour l'exploitation de cette faiblesse et que j'ai le temps, j'ajouterai un contrôle actif pour celle-ci dans mon plugin.
Ce logiciel a été créé uniquement à des fins de recherche académique et pour le développement de techniques défensives efficaces, et n'est pas destiné à être utilisé pour attaquer des systèmes, sauf autorisation explicite. Les mainteneurs du projet ne sont pas responsables de l'utilisation abusive du logiciel. Utilisez-le de manière responsable.
Copyright (c) 2020 Java Deserialization Scanner
La permission est accordée, gratuitement, à toute personne obtenant une copie de ce logiciel et des fichiers de documentation associés (le « Logiciel »), de traiter le Logiciel sans restriction, y compris, sans limitation, les droits d'utiliser, de copier, de modifier, de fusionner, de publier, de distribuer, de sous-licencier et/ou de vendre des copies du Logiciel, et de permettre aux personnes à qui le Logiciel est fourni de le faire, sous réserve des conditions suivantes :
La notice de copyright ci-dessus et cette notice de permission doivent être incluses dans toutes les copies ou parties substantielles du Logiciel.
LE LOGICIEL EST FOURNI « EN L'ÉTAT », SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE, Y COMPRIS, MAIS SANS S'Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D'ADÉQUATION À UN USAGE PARTICULIER ET D'ABSENCE DE CONTREFAÇON. EN AUCUN CAS, LES AUTEURS OU TITULAIRES DU COPYRIGHT NE POURRONT ÊTRE TENUS RESPONSABLES DE TOUTE RÉCLAMATION, DE TOUT DOMMAGE OU DE TOUTE AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D'UNE ACTION CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DE, OU EN RELATION AVEC LE LOGICIEL OU L'UTILISATION OU D'AUTRES INTERACTIONS AVEC LE LOGICIEL.