我们帮助很多用户修复了被黑的网站,大部分的时候当他们找到我们时,网站虽然已经是清理过的,但是黑客依旧可以登录到网站后台。因为如果你没有正确的清理网站或者你不知道该去检查什么文件的话,黑客留下的后门还是可以让他们绕过普通的认证。本文我们将为你展示如何找出黑客留下的后门并进行修复。
什么是后门?
后门是指绕过正常身份验证并获得远程访问服务器同时不被检测到的方法。 大多数聪明的黑客在黑进网站后总是会第一时间上传后门程序,这样即使你删除了被利用的插件,他们也能重新获得访问权限。后门通常可以在升级过程中存活下来,因此在你完全清理干净前,你的站点很容易再次受到攻击。
一些后门程序仅仅是可以让用户创建隐藏的管理员,而更复杂的后门可以允许黑客执行从浏览器发送的任何PHP代码。 它们拥有一个完整的UI界面,允许他们利用你的服务器发送电子邮件,执行SQL查询,以及任何他们想做的事。
代码被隐藏在哪里?
在WordPress站点,后门程序最可能存储的位置是下面的几个位置:
主题 – 最有可能的是没有在使用的主题。黑客希望代码能够在核心升级中存活下来,所以如果你还保留了其他没有使用的主题,那么代码很可能在那些主题文件里。所以这也是为什么我们推荐你删除那些不使用的主题。
插件 – 黑客选择将代码藏在插件中有三个理由。第一,因为用户一般不会仔细查看插件的文件。第二,用户不太喜欢去升级插件,所以后门得以存活下来。第三,有一些插件本身的代码就有问题,可能自身就有一些漏洞。
上传目录 – 作为一名博主,你几乎从来不会去查看上传目录。为什么要查看?你仅仅上传一些图片,然后在文章中引用这些图片罢了。可能在你的上传目录中以年月的组织形式存储了成千上万张图片,这就让黑客可以轻而易举的将后门上传到这个目录中。因为后门程序可以隐藏在大量的图片中,而且你又不会去经常检查这里,一般人也没有安装安全监控的插件。最后,上传目录是可写的,所以不会有什么异常被发现。这就导致上传目录成为大多数后门程序最好的归宿,我们在这个目录里查到大量的后门程序。
wp-config.php – 这是被黑客经常攻击的文件之一,也是大多数人在网站出问题后第一时间要查看的文件。
wp-includes文件夹 – /wp-includes/文件夹是另一个我们从中找到过后门的地方。一些黑客会留下不止一个的后门文件,一旦他们上传了第一个,他们就会再上传一个作为备份,以确保他们可以或得权限。wp-includes文件夹是另一个用户不会去查看的地方。
在我们发现的所有案例中,后门文件会进行伪装,让自己看起来像WordPress的原生文件。
例如:在我们处理的一个网站中,后门程序在/wp-includes/文件夹内,名字是wp-user.php(正常情况下是不存在这个名字的文件的)。在/wp-includes/中有user.php,但是没有wp-user.php。在另一个案例中,我们在上传文件夹中发现了一个叫hello.php的文件,它把自己伪装成Hello Dolly插件,但是为什么插件会出现在上传文件夹里?啊哦…
后门的名字也可能是像 wp-content.old.tmp,data.php,php5.php之类的,而且名字并不一定要以php结尾,因为文件里面是php代码。它可以是一个.zip文件,在大多数情况下,这些文件使用base64代码进行编码,这些代码可以执行各种操作(即添加垃圾链接,添加其他页面,将主站点重定向到垃圾页面等)。
现在你可能会觉得WordPress真的太不安全了,居然还能设置后门。不!你错了!WordPress目前的版本没有已知的漏洞,后门也不是黑进网站的第一步,一般来说是第二步。黑客常常会在第三方插件或脚本中找到漏洞,然后获取权限去上传后门。
如何找出并清除掉后门?
现在你已经知道了什么是后门,以及它可能会出现的地方。那么你可以开始查找后门文件了。清除后门就像删除文件或代码一样简单,但是难就难在查找后门文件。你可以使用一些WordPress恶意软件扫描插件来帮你查找。
你还可以使用Exploit Scanner,但是要知道插件也使用了base64和eval编码,所以有时候会产生大量的误报。如果你不是插件的开发人员,要想从数千行代码中找到那些恶意代码真的是非常困难的。所以最简单的方法就是直接把插件的目录整个删除,然后再重新下载安装。除非你有大量的时间去查看代码,否则这是唯一的方法了。
搜索上传目录
有些扫描插件可以找到上传目录中的流氓文件,但是如果你对SSH比较熟悉的话,那么只需要下面一行代码就可以了。
find uploads -name "*.php" -print
上传文件夹里没有理由存在.php文件。这个文件夹是用于存放媒体文件的,如果出现了.php文件,那么一定要删除掉。
删除不使用的主题
前面我们提到过,不使用的主题常常会成为后门的藏身之处。最好的办法就是删除掉这些主题,包括默认的主题。但是等一下,我还没有查看到底后门在不在那些主题里。如果在主题里的话,现在也已经被删除了。你不必再花时间去挨个检查,而且删除掉多余的主题还能避免额外的攻击。
.htaccess文件
有时候重定向代码会被添加在这里。删除掉这个文件就可以了,系统会自动重新生成一份。如果没有自动生成,前往管理员后台的“设置” – “固定链接”,点击“保存”按钮就会重新创建一个.htaccess文件。
wp-config.php文件
把这个文件跟默认的wp-config-sample.php做详细的对比,如果你看到有不一样的地方,直接删除掉那些代码即可。
扫描数据库中的漏洞和SPAM
聪明的黑客永远不会只有一个安全点。 他们会创建很多个。 将数据库作为目标是一个非常容易的, 他们可以在数据库中存储恶意PHP函数,新的管理员帐户,垃圾邮件链接等。 是的,有时你并不会在用户的页面中看到管理员用户。 例如你看到总数显示有3个用户,但是你只能在列表中看到2个,那么很有可能你的网站被黑了。
如果你不知道该怎么处理数据库的问题,那么这些扫描插件可以帮你。Exploit Scanner或者Sucuri(付费版)都可以帮你搞定。
觉得已经都清理完了?再想想!
不要觉得大功告成了,用浏览器的隐身模式来检查一下网站是否真的已经清除干净了。有时候,这些黑客非常聪明,他们不会向登录用户显示黑客攻击,只有没登录的游客可以看到。最好再试试把浏览器的user-agent改成Google。有时候,黑客只想将搜索引擎作为目标。如果一切都看起来没问题,那么恭喜你,网站修复到此结束。
仅供参考:如果您想100%确保网站没有残留任何恶意代码,那么请直接删除网站,并将其恢复到一个没有被黑客攻击的时间点(所以定时备份很重要,异地备份很重要)。 这可能不适合每个人,所以三思而后行。
将来如何防范黑客?
我们首选的建议是一定要保持定时备份,从现在起开始启用网站监控。当你有一堆其他的事情要做的时候,你自己是不可能把网站上运行的所有情况都监控到的,所以让专业的插件去做这件事。
一些你可以做的事情:
使用强密码 – 让你的用户强制使用强密码。使用密码管理工具来管理所有的密码,例如 1Password。
两步认证 – 如果你的密码被破解了,黑客仍然需要获得你手机上收到的验证码才行。
限制登录尝试 – 这个插件可以让你将那些登录失败次数达到设定值的用户暂时锁定。
禁用主题和插件编辑器 – 这可以防止用户权限升级的问题。即使用户权限已经被升级了,他们也无法通过管理员后台修改主题或插件。
使用密码保护wp-admin目录 – 你可以使用密码将整个目录保护起来,也可以通过IP来限制登录。
对特定WordPress目录禁用PHP文件执行 – 这可以在上传目录以及其他你选定的目录中禁止PHP文件执行。这样就算有人可以将文件上传到文件夹中,他们也无法让文件运行。
保持更新 – 运行最新版的WordPress,更新插件。
最后,在安全性的问题上千万不要省钱。最好的安全措施就是备份,请一定一定一定要保持网站的日常备份,大多数的主机服务商是不会替你做这些的。用个靠谱点的备份插件,比如BackupBuddy或者VaultPress。这样的话即使你的网站被黑了,你也随时可以通过备份进行还原。
真心希望这篇文章可以帮助你。如果你有什么需要补充的,欢迎在下面留言。