如果您的网站在更新之前已被黑客入侵,您需要梳理文件系统以查找已修改和/或添加的文件。
上传 Joomla 3.4.8 的新副本不会解决此问题。
我将假设 linux 因为那是我运行的时候。我管理多个 LAMP 服务器,每个服务器托管多个域。
保存备份并将其标记为受感染。这样做是因为该网站在受感染后仍在运行。
第一件事……
run tail -f path/to/logs/* | grep POST
您需要查看谁在您的网站上发布了奇怪的文件。
关闭自动换行。
发布到的每个发现都需要进行可视化查看。
joomla 文件以<?php\n 开头,然后是注释标题。如果您看到一串 PHP 代码,则需要将其删除。
这里列出了一些我经常看到的文件。
nnnnnnnnnnnnnnnnn.php
alias.php
article.php
css.php
blog66.php
defines.php < Joomla file that has been modified.
dirs.php
footer4.php
functions14.php
global.php
lib87.php
trust.php
functions.php
/includes/defines.php 不应该是一个长文件。如果你看到 //istart 那么你需要从那时起删除所有内容。
您需要 grep 查找使用 eval 或 GLOBAL 的文件。还应检查 istart。这些命令很可能会输出大量数据,因此将其通过管道传输到 less。
find /home -iname \*.php | xargs pcregrep -M "^<?php.*\n.*fun"
find /home/ -iname \*.php | xargs grep "eval("
find ./ -iname \*.php | xargs grep "globals"
Pipe to less 像这样工作。
find ./ -name \*.php | xargs grep -r "eval(" | less
grep -r "eval(" | less
您将寻找包含类似这样但更长的编码字符串的文件:(发布的代码无效)1ktebHkKHMh7oMftoPA4evcfEoVJs4sUmcTtLCl5Jq0IGoKAUnbzDC1f6C2rJpduyVxvDvRsEztPwSUb6ey73tAVtx8A6BPK+SwyqR/edx3BsfPnmsfbw
很多时候文件将以 eval base64_decode 和 gzuncompress 结尾。
许多合法文件使用 eval 和 base64 解码。如果您看到很长的编码数据块,则很可能是恶意文件。一段时间后,您将能够看到看起来不正确的模式。
有些文件也可能有谷歌机器人的用户代理。我最近一直在看到这个,所以寻找字符串 googlebot
grep 文件也用于以下字符串。
74.125
lnkfarm.pw # this is an actual host. It has been reported to Interpol
您可以备份您获得的任何文件,并对照 joomla 的 github 存储库检查它们。
https://github.com/joomla/joomla-cms
还要检查 mailq 是否有垃圾邮件机器人导致的延迟邮件,这就是其中许多文件的用途..
我还添加了如下的 iptables 规则来最初停止它。
-A INPUT -p tcp -m tcp --dport 80 -m string --string "POST /libraries/joomla/exporter.php" --algo bm --to 90 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -m tcp --dport 80 -m string --string "POST /modules/bmvlfj.php" --algo bm --to 90 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -m tcp --dport 80 -m string --string "POST /modules/7595mb.php" --algo bm --to 90 -j REJECT --reject-with icmp-port-unreachable
可能还有很多其他方法可以搜索恶意文件,但这是我目前使用的方法。
清除所有恶意文件后,进行备份,然后更新所有扩展。之后我会再次检查您的文件并将 Joomla 文件的新副本加载到您的网站上,然后在您的 Web 目录中搜索最旧的文件。
确定一切正常后,更改所有密码并备份。不要在本地存储备份。