记一次失败的网站修复史

Posted by Groxyu on August 12, 2020

“被蠢哭,吐了

毫无营养的吐槽记录,有兴趣的看官必须跳过。

1.

最近老收到阿里云催费的通知,打开看,原来是老博客的域名和服务器快要到期了。于是在准备续费的同时,顺带打开好久不登的老博客,发现它打开变成了一片空白。

觉察到事情不妙,赶忙搞个FTP看看网页到底是个什么情况,(14年买的阿里云虚机,连SSH都不支持,坑)。果不其然,网站被黑了,之前写了快5-6年的日志啊。。还好之前有过一次被黑的经验,相对淡定一些了,先把现在网页的内容下下来瞅瞅。

之前建站是用的Wordpress,把下载下来的文件和官方的文件一对比,多了很多莫名其妙的文件和文件夹,都已经完全分不清哪个是正常的哪个是被黑的,index也搞不见了,难怪一片空白。不过,日志、图片的这些内容应该都是存放在数据库里。所以,我只要下载最新版本的Wordpress替换掉现在这些乱七八糟的内容即可。当然,我还想知道这个黑我网页的人到底想用我的这个破服务器干嘛,不过看了半天源码没什么头绪,但在代码里找到了多个可疑的IP地址,一查所在地,都是俄罗斯莫斯科。好家伙,难怪这文件的命名都这么诡异,我懂了,= =

无聊地纠察了几分钟无果后,开始准备正式修复网站。

2.

官网上下载最新稳定版的Wordpress,把现在服务器上的被黑文件全部删光,开始上传解压缩后的Wordpress。但是诡异的是,FTP上传总是在一会后就报错,然后无法继续上传。把上传到一半的文件删除,重新上传,还是不行。一开始我以为是因为我用的“绿色版”FTP软件的原因,陆续换了几个其它软件,包括CuteFTP,XFTP,还有windows自带的FTP,都一样的原因。真是奇了怪了,难道是阿里云服务器的原因?

查了下官方的FTP上传文档,说建议把所有文件打包成zip上传,再在服务器上解压,避免传输过程中发生中断的问题。好吧,按照它这个要求来试试,结果速度简直飞起!瞬间传完压缩包。不过,我又发现了另外一件诡异的事情,因为要在线解压,所以在传压缩包前就把所有文件全部删除了啊,怎么还有一个wp-admin文件夹?

于是再次删除之,过了几秒钟刷新,我去,wp-admin又出来了。好吧,一直删除不掉,典型的恶意软件的征兆啊。打开文件夹看,就是篡改后的wordpress的wp-admin下面的一些文件,但内容都是空白,0KB。

看来你就是罪魁祸首,必须把你删除了!打开阿里云的控制面板,直接用强力删除把它删除!结果过了一会再次刷新,篡改后的wp-admin竟然还是冒出来了。啥情况,连阿里云的强力删除都没法删除?这个机制是什么机制?为什么删除一会后它又自动出现呢?

我一开始以为是有一些隐藏文件,反正就让你无法删除。苦苦思索无法解决,大概过了半个小时,突然灵机一动,会不会不是它无法删除,也不是因为它会本地自动修复,而是它删除后又被重新上传到我的服务器上?既然我服务器被黑,肯定是因为我的FTP密码被泄露了才会这样。于是抱着试一试的心态,在后台把FTP密码改了,删除wp-admin后再次刷新,终于,它不再出现了。。好吧,真相大白。这兄弟估计是每隔几秒就往这个服务器上传(或者更新)这个wp-admin,防止被搞掉。

原来如此,难怪FTP传的慢,有的时候甚至会出错,但压缩文件却传的那么快。。因为多个FTP请求更改同一个文件,肯定不行的啊。

还是太菜,被黑的第一时间想到的竟然不是改FTP密码,我的锅。

3.

把新版本的Wordpress上传解压后,兴奋并期待地打开网页。。网页不是空白了,但是报错:

1
2
3
Warning: require(__DIR__/wp-blog-header.php) [function.require]: failed to open stream: No such file or directory in /home/67/52/7265267/web/getbluesample/index.php on line 17

Fatal error: require() [function.require]: Failed opening required '__DIR__/wp-blog-header.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/67/52/7265267/web/getbluesample/index.php on line 17

命运就是如此多舛,继续解决吧。在百度上搜了一段时间无果,看来不是常见的bug,不会是这哥们把我数据库也搞崩了吧?那就真完了。转google搜,结果瞬间找到解决方法,原来是我用的wordpress的版本(5.4.2)和服务器上的PHP版本(5.2)不兼容。大佬调到PHP 7.0后解决该问题。采用该方案后,问题解决。

终于回到了熟悉的Wordpress界面,初始化的第一步,首先是要链接对应的数据库。打开阿里云的控制面板,输入数据库对应的信息,结果又来BUG:一直提示无法连接数据库。不管怎么换密码,或者检查mysql的运行状态(没法检查因为没有ssh),还是按照网上的各种解决方案。。都不行。最后心想,换一个数据库版本试试?切换版本后的瞬间,我傻了,它竟然把之前数据库的内容全部清空了!!!瞬间石化,那我搞这么久有啥意义啊= =,日志啥都没了!崩溃。再确认一下数据库版本切换的提示,结果它用小字提醒了,说的确会清空数据,需要提前把数据备份到本地。。

正要打算放弃的时候,又发现了一个奇怪的服务。。阿里云官方提供的数据恢复!提供数据恢复功能,要价800RMB。。。。。。。。。。那我当时第一时间为什么不直接把它恢复到被黑之前的历史版本呢。

吐了!

4.

刚提交工单,再等个几天,看这个恢复情况吧。。

P.S. 后续结果,阿里云反映我使用的数据库太老,找不到相应的备份。Nice!已申请退款。