
CVE 2022-45299
#Bibliothèque concernée :
webbrowser.rs avant la version 0.8.3 https://github.com/amodm/webbrowser-rs
#Résumé:
La bibliothèque ne vérifie pas que l'entrée fournie est réellement une URL. Un attaquant contrôlant une URL non filtrée passée à webbrowser::open(URL) peut donc fournir un chemin de fichier local qui sera ouvert dans l'explorateur par défaut ou passer un argument à la commande open sous-jacente pour exécuter des commandes système arbitraires enregistrées.
#Détails:
webbrowser::open appelle en interne shellExecuteW en passant l'URL comme argument à open pour Windows. Sous Windows, l'attaquant contrôle l'argument lpFile de shellExecuteW, ce qui peut permettre d'ouvrir des fichiers locaux arbitraires. Si un attaquant parvient à passer une URL qui est en réalité un commutateur de ligne de commande pour open, il peut être en mesure de lancer des commandes arbitraires (ou de faire tout ce que open lui permet de faire avec un argument). Par exemple, webbrowser::open(".") ouvrira Finder dans le répertoire de travail courant. Vous pouvez également exécuter des scripts Python en fournissant simplement le chemin du script, et j'ai réussi à le faire avec n'importe quel autre langage compilé ou de script. Je n'ai pas pu reproduire le problème sous Linux, mais des fichiers locaux comme /etc/passwd peuvent être chargés en fournissant simplement le chemin du fichier.
#code vulnérable:

#POC:
