
CVE 2022-45299
#Betroffene Bibliothek :
webbrowser.rs vor Version 0.8.3 https://github.com/amodm/webbrowser-rs
#Zusammenfassung:
Die Bibliothek validiert nicht, ob die bereitgestellte Eingabe tatsächlich eine URL ist. Ein Angreifer, der die Kontrolle über eine ungefilterte URL hat, die an webbrowser::open(URL) übergeben wird, kann daher einen lokalen Dateipfad bereitstellen, der im Standard-Explorer geöffnet wird, oder ein Argument an den zugrunde liegenden open-Befehl übergeben, um beliebige registrierte Systembefehle auszuführen.
#Details:
webbrowser::open ruft intern shellExecuteW auf, wobei die URL als Argument an open für Windows übergeben wird. Unter Windows kontrolliert der Angreifer das lpFile-Argument von shellExecuteW, was das Öffnen beliebiger lokaler Dateien ermöglichen kann. Wenn ein Angreifer eine URL übergibt, die tatsächlich ein Befehlszeilenschalter für open ist, kann er möglicherweise beliebige Befehle ausführen (oder tun, was open mit einem Argument erlaubt). Zum Beispiel öffnet webbrowser::open(".") den Finder im aktuellen Arbeitsverzeichnis. Außerdem können Python-Skripte ausgeführt werden, indem einfach der Pfad zum Skript angegeben wird, und mir ist das mit jeder anderen Sprache (kompiliert oder skriptend) gelungen. Ich konnte das Problem unter Linux nicht reproduzieren, aber lokale Dateien wie /etc/passwd können geladen werden, indem man einfach den Pfad zur Datei angibt.
#vuln code:

#POC:
