
Script de preuve de concept basé sur Python démontrant la vulnérabilité XSS CVE-2018-25031 dans Swagger UI utilisant Selenium pour la détection automatisée sur plusieurs points de terminaison.
Ce dépôt contient un script Python qui démontre une preuve de concept (POC) d'une vulnérabilité de Cross-Site Scripting (XSS) dans Swagger UI, utilisant la bibliothèque Selenium. L'objectif de cette POC est d'identifier les sites susceptibles d'être vulnérables via l'exploitation de Swagger UI avec une charge malveillante.
Swagger UI est un outil largement utilisé pour visualiser et interagir avec les API via une interface utilisateur conviviale. Cependant, dans la version 2.9.2, une vulnérabilité de Cross-Site Scripting (XSS) a été identifiée, qui pourrait permettre à un attaquant d'injecter du code JavaScript malveillant dans les pages Swagger UI chargées.
Le XSS se produit lorsqu'une application ne valide pas correctement les données saisies par l'utilisateur avant de les afficher sur la page. Dans ce cas, un attaquant peut exploiter la vulnérabilité en insérant un code JavaScript malveillant dans les champs de saisie de Swagger UI, qui sera exécuté dans le contexte du navigateur d'autres utilisateurs accédant à la même page compromise.

Remarque : L'image ci-dessus illustre un exemple de la façon dont un attaquant peut insérer un payload XSS dans Swagger UI, en exploitant une faille de sécurité dans les versions concernées.
La manière la plus efficace d'atténuer cette vulnérabilité est de s'assurer que Swagger UI est mis à jour vers une version non affectée. Vérifiez les dernières versions de Swagger UI et maintenez-le toujours à jour.
Pour les développeurs souhaitant utiliser ou personnaliser Swagger UI, il est essentiel d'effectuer une validation appropriée des données d'entrée avant de les afficher dans l'interface. Éviter le rendu direct du HTML ou JavaScript saisi par les utilisateurs est une pratique recommandée pour prévenir les vulnérabilités XSS.
Voici un exemple simplifié de la façon dont la vulnérabilité peut être exploitée en utilisant Swagger UI :
Cette section est uniquement destinée à des fins éducatives et informatives. N'encouragez pas et ne participez pas à des activités malveillantes ou illégales. Suivez toujours les pratiques de divulgation responsable lors du signalement de vulnérabilités.
Assurez-vous d'avoir les prérequis suivants installés avant d'exécuter le script :
pip install selenium
Clonez ou téléchargez ce dépôt sur votre machine.
Modifiez le fichier sites_para_testar.txt et insérez les URL des sites que vous souhaitez tester, une par ligne.
Ouvrez un terminal dans le dossier du dépôt et exécutez le script à l'aide de la commande suivante :
python main.py
Le script parcourra les sites listés dans le fichier sites_para_testar.txt, accédera à leurs URL Swagger UI et vérifiera si une alerte XSS est détectée. Les résultats seront enregistrés dans trois fichiers : valido.txt pour les URL potentiellement vulnérables, talvezvalido.txt pour les URL qui pourraient être vulnérables et naovalido.txt pour les URL non vulnérables.
Le script utilise la bibliothèque Selenium pour automatiser l'interaction avec le navigateur Chrome. Il charge les URL Swagger UI configurées dans le fichier sites_para_testar.txt, ajoute une charge malveillante au paramètre configUrl et vérifie si une alerte XSS est déclenchée.
Le script utilise les étapes suivantes :
sites_para_testar.txt et itère sur eux.valido.txt, talvezvalido.txt ou naovalido.txt.Ce script est fourni uniquement à des fins éducatives et de sensibilisation à la cybersécurité. Il ne doit pas être utilisé à des fins malveillantes ou illégales. L'auteur décline toute responsabilité en cas d'utilisation abusive de ce script ou de tout dommage découlant de son utilisation.
Si vous trouvez un moyen d'améliorer ce script ou si vous avez des suggestions, n'hésitez pas à créer une pull request.
Ce projet est sous licence MIT.