情况说明
这已经官网第二次宕机,宕机时间经历2天多。(原本以为比较麻烦,所以没有把恢复官网放到自己任务的最优先级),等自己手上几个任务完成后,快到天亮的时候,结果用了不到10分钟就解决了问题。
可能是第二次官网宕机,比较有经验了吧。所以这次恢复官网很快
第一次宕机时间一天多,虽然用了 Git 作版本控制,但由于学艺不精。最后也用2-3个小时恢复网站。
这一次仅仅用10分钟就恢复了网站,不但网站恢复了。但找到了出问题的几个文件。但为什么会现这个问题,就无从而知了。
解决过程
前面在【Git-开发者必备的技能】这篇文章中说过 天水跳蚤 这个项目应用 Git 作版本控制的解决方案。但公司官方基本也使用和 天水跳蚤 相同的版本控制方案。都是借助于第三方代码托管的。
所以第三方的 master 分支的代码是干净的。
尝试
- 登录生产环境 git pull 第三方代码托管 master 分主代码,但没有任何变化。 分析原因可能因为远程代码库 master 分支代码没有变化,导致 git pull 失败。
- 换命令 git feach 结果一样,虽然部分代码更新。但有问题的代码和新添有问题的文件依然存在。网站依然报500错误。
解决
- 远程仓库(第三方代码托管) 新建分支 error
- 提交生产环境的问题代码到第三方 error 分支
- 删除生产环境官网网站目录
- git clone 远程仓库 master 分支到生产环境新建网站目录中。
网站恢复正常
分析原因
操作流程
- 在本地新建 error 分支
- git pull 代码库中 error 分支到本地
发现问题文件
404.object.php | 351 +++++++++++++++++++++++++++++
lekee.cc | 1 +
wp-admin/includes/class-wp-screen.php | 2 +-
wp-admin/includes/ms-deprecated.php | 2 +-
wp-content/plugins/advanced-custom-fields/js/blog1.php | 79 +++++++
wp-content/plugins/contact-form-7/modules/gallery.php | 7 +
wp-content/themes/lekeopen/header.php | 2 +
wp-includes/random_compat/random_bytes_dev_urandom.php | 2 +-
wp-includes/widgets/class-wp-widget-calendar.php | 108 ---------
wp-includes/widgets/class-wp-widget-calendar.php.suspected | 108 +++++++++
10 files changed, 551 insertions(+), 111 deletions(-)
create mode 100644 404.object.php
create mode 160000 lekee.cc
create mode 100644 wp-content/plugins/advanced-custom-fields/js/blog1.php
create mode 100644 wp-content/plugins/contact-form-7/modules/gallery.php
delete mode 100644 wp-includes/widgets/class-wp-widget-calendar.php
create mode 100644 wp-includes/widgets/class-wp-widget-calendar.php.suspected
这是挂马代码和干净代码的区别,虽然修改这些有问题的代码能解决问题。
但至于这些文件是怎么被修改,其中的原理就不得而知了。
希望
最后希望有知道的原因的或者安全专家能帮助彻底根治服务器的这个漏洞。