Magento致命错误:找不到类'Varien_Data_Collection_Filesystem'

时间:2015-09-16 08:04:45

标签: php magento

检查错误原因,将Filesystem.php文件重命名为Filesystem.php.suspected。手动将其重命名为Filesystem.php可以解决问题,但是我们每天都需要手动重命名它,因为它经常被重命名为Filesystem.php.suspected。

我已经搜索了导致错误的原因但仍然没有运气。 我很确定有一些东西正在重命名这个文件,但不知道从哪里开始,因为我对magento很新。

Magento ver。 1.9.1.1

1 个答案:

答案 0 :(得分:7)

问题

基本上黑客在你的服务器上获得了他们的代码。您要么在不知情的情况下安装它,要么在您的服务器安全性中存在漏洞,让他们上传(甚至可能是PHP' cgi.fix_pathinfo问题)

.suspected 文件扩展名是一件好事,因为它不允许恶意代码继续使用/滥用它。谢天谢地,您的服务器上运行了一个服务,可以为您检测到这一点。所以问题不在于Filesystem.php,而是该文件被其他恶意文件滥用......你需要找到该文件 - 可能还有文件。

如何解决

首先,让我说没有快速的'解决方案。如果你的心脏打算抢救你的服务器,这就是这个过程。您将需要SSH访问您的服务器。

我的服务器设置为 Ubuntu 14.04LTS ,使用 nGinX 网络服务器 Exim4 进行电子邮件发送。如果您不使用这些相同的服务,请尝试使用适合您服务器环境的等效命令。

在我们开始之前:

[不得不说]:如果您复制粘贴此处列出的任何命令,请务必更换' YOUR_USERNAME '具有对您的服务器环境有意义的值。

其他可能发生的坏事: 我发现黑客已经在我的服务器上获得了可执行代码,该代码创建了一个.php文件,作为接收HTTP POST请求的url端点。那些POST请求会触发黑客的脚本使用我的Exim4电子邮件服务器发送他们的电子邮件。检查我的Exim4电子邮件队列时,每周发送54,000封电子邮件。

让我们开始

检查他们是否滥用您的服务器发送电子邮件

我检查了&使用以下命令清除了我的Exim4邮件队列:

exim -bpc

exim -bp | exiqgrep -i | xargs exim -Mrm

安装Magento SUPEE安全更新

Magento SUPEE安全补丁旨在纠正此远程可执行文件漏洞。在您的服务器上安装所有Magento SUPEE更新(最旧到最年轻):

到这里下载它们: https://www.magentocommerce.com/download

它们位于该页面的底部,位于'下载' - >> ' Magento社区版补丁'

有一个选择框供您选择与您的Magento版本相关的补丁。

你应该'下载1.9.1.0发布后发布的所有内容(2014年11月24日之后):

  • SUPEE-4829
  • SUPEE-5344
  • SUPEE-5994
  • SUPEE-6237
  • SUPEE-6285
  • SUPEE-6482

将所有下载的 .sh 补丁文件放入根Magento目录中。我的是:

/home/YOUR_USERNAME/www

然后一次执行一次:

  • cd /home/YOUR_USERNAME/www
  • sh PATCH_SUPEE-4829_EE_1.14.1.0_v1-2015-02-10-07-57-21.sh
  • sh PATCH_SUPEE-5344_CE_1.8.0.0_v1-2015-02-10-08-10-38.sh
  • sh PATCH_SUPEE-5994_CE_1.6.0.0_v1-2015-05-15-04-34-46.sh
  • sh PATCH_SUPEE-6237_EE_1.14.2.0_v1-2015-06-18-05-24-23.sh
  • sh PATCH_SUPEE-6285_CE_1.9.1.1_v2-2015-07-08-08-07-43.sh
  • sh PATCH_SUPEE-6482_CE_1.9.2.0_v1-2015-08-03-06-51-10.sh

查找恶意文件

可能存在大量恶意文件。我发现了十几个,随着时间的推移,它们继续重新产生。

  • /home/YOUR_USERNAME/www/include.php
  • /home/YOUR_USERNAME/www/get.php
  • /home/YOUR_USERNAME/www/MY_OWN_NON-MAGENTO_FOLDER/class.php
  • /home/YOUR_USERNAME/www/media/system/system.php
  • /home/YOUR_USERNAME/www/media/system/mail.php
  • /home/YOUR_USERNAME/www/media/system/admin-infos.php
  • /home/YOUR_USERNAME/www/media/wysiwyg/MY_OWN_FOLDER/system37.php
  • /home/YOUR_USERNAME/www/media/captcha/admin/error44.php
  • /家庭/ YOUR_USERNAME /网络/ entreeBam / entreeBam / *

黑客必须遵循一系列事件才能让他们的文件像瑞士奶酪一样通过您的服务器传播。

基本上,他们需要一个起点。对我来说,这是' /home/YOUR_USERNAME/www/include.php'

为了找到那样的文件,我运行了这个命令:

egrep -RI 'function.*for.*strlen.*isset' /home/YOUR_USERNAME/www

我知道黑客的脚本允许文件上传,并且所有文件上传都需要在PHP中使用move_uploaded_file()。所以这个命令显示了大多数Magento的GOOD文件,但它也向我展示了一个糟糕的文件。那是' class.php ':

egrep -RI 'move_uploaded_file\(' /home/YOUR_USERNAME/www

因此,在删除根目录和可能的其他目录中那些更明显的黑客访问点之后,您现在必须查看可以找到的其他恶意文件。

检查您的Web服务器访问日志以查找对奇怪文件的POST请求

您的服务器根本不应该接收很多POST请求(如果有的话)。因此,黑客基本上会为您绘制一个完美的路线图,直接指向您需要删除的文件。您需要做的就是检查'哪个' .php文件正在接收POST请求。如果他们的文件内容可疑,请删除它们。

提示:向服务器发送POST请求的IP地址也可以帮助您确定文件是否可疑。如果您不识别IP地址,则不应向您发出POST请求。

我使用nGinX作为我的网络服务器,因此请确保在/etc/nginx/nginx.conf文件中启用了access.log。当您知道您的nGinX access.log已填充时。使用此命令显示其中的所有POST请求:

egrep -RI 'POST' /var/log/nginx/access.log

我发现了帖子请求:

  • /media/system/system.php(显然不应该在媒体文件夹中)
  • /conns.php(有些经验告诉你这不是Magento文件)

删除文件后,您的access.log将开始显示每个POST请求的HTTP 404响应(不再是HTTP 200)。那很好。这意味着黑客试图运行他们的脚本不起作用。最终黑客会在他们看到你删除了所有收件人.php文件时停止发出POST请求。

要查看访问日志中对POST请求的 404 响应的文件:

egrep -RI "POST\s.*\.php(\s|&).*\s[4][0-9][0-9]\s" /var/log/nginx/access.log

要查看访问日志中对POST请求的 200 响应的文件:

egrep -RI "POST\s.*\.php(\s|&).*\s[2][0-9][0-9]\s" /var/log/nginx/access.log

使用此命令确保媒体文件夹中没有任何PHP文件:

find /home/YOUR_USERNAME/www/media/* -name "*\.php"

查看文件内部,我可以看到一堆base-64编码的东西。没有合法的PHP脚本会由那么多base-64编码的东西组成。

找到所有恶意文件并将其删除后,您可以修复导致您看到的错误导致此问题发生的一个问题。

将Filesystem.php.suspected重命名为它应该是什么:

mv /home/YOUR_USERNAME/www/lib/Varien/Data/Collection/Filesystem.php.suspected /home/YOUR_USERNAME/www/lib/Varien/Data/Collection/Filesystem.php

摘要

最关键的事情是:

首先,找到并删除原始接入点,' include.php'和(腐败的)' get.php'。这样黑客就无法继续在我的服务器上放置文件。

第二次,继续检查我的网络服务器访问日志中是否有POST请求导致奇怪的文件。然后检查并删除这些文件。

最后,如果你保持推荐的Magento文件&文件夹权限,并使用最新的SUPEE更新使您的服务器保持最新。

对于娱乐,您可以运行此命令,查看由于此滥用行为导致服务器的反恶意软件关闭了多少文件。其中一些是恶意文件 - 有些只是被滥用的好文件。

find /home/YOUR_USERNAME/www/* -name "*\.php.suspected"