专栏首页草根博客站长有话说WordPress 恶意代码的分析和排查方法
原创

WordPress 恶意代码的分析和排查方法

自【网站安全的「灯下黑」隐患:账号安全】一文发表后,明月收到了很多站长们有关 WordPress 站点安全的问题咨询,明月总结分析了一下几乎 90%以上都是“恶意代码”造成的,而给站点带来恶意代码的插件就占了 80%以上(有官网插件、网上流传的插件等等),其他的就是主题了(以破解版、盗版主题为主),其实无论是“恶意代码”还是“后门木马”都是以代码的形式在服务器上传播破坏的,今天明月就跟大家讲讲如何通过对代码的分析来提前找出这些“肮脏”的东西。

function.php 里恶意代码的分析和排查

在 WordPress 里“恶意代码”最容易出现的地方就是主题目录下的 function(s).php 里,一般正规的 function.php 文件结尾都会有类似下面这样的结尾注释:

  1. //全部结束
  2. ?>

如果你发现没有这个结束注释的时候,那么基本可以判定你的 function.php 文件被篡改过了,就需要好好的检查了,比如下面这些代码行:

  1. function _checkactive_widgets
  2. function _get_allwidgets_cont
  3. function stripos
  4. function strripos
  5. function scandir
  6. function _getprepare_widget
  7. function __popular_posts
  8. add_action("admin_head", "_checkactive_widgets");
  9. add_action(“init”, “_getprepare_widget”);
  10. _verify_isactivate_widgets
  11. _check_isactive_widget
  12. _get_allwidgetscont
  13. _prepare_widgets
  14. __popular_posts

每行是独立存在的,如果你的 functions.php 中有上面任意一段代码,那么你可能就中招了。其中 function、add_action 这类一般都是属于“恶意代码”做“准备活动”的代码。

清除 function.php 恶意病毒代码

清理也很简单,直接在 function.php 文件里面找到上面的类似代码删除即可,但因为一旦感染会导致你 themes 主题目录所有主题都感染,因此你只清除当前使用主题是无效的,你清除后很快就会生成,因此你清除掉一个主题的代码后,把 functions.php 文件设置为 444 权限,然后再清理其他主题即可。至于最后 functions.php 文件的 444 权限是否需要改回去,个人建议 444 挺好挺安全的,等要修改的时候再修改就行了。


当然“恶意代码”并不仅仅局限于 function.php 文件里,明月就碰到过隐藏在 WordPress 根目录 index.php 文件里、wp-include 或者 wp-admin 目录下某个 PHP 文件、cache 这样有读写权限的目录等等,可以说是五花八门、脑洞大开的无所不在,这些其实就是【网站安全的「灯下黑」隐患:账号安全】一文里所讲的账号权限被获取到的后果,这样的结果最难排查,就明月的经验来说大致可以分为两种,分别如下:

手动排查和清除

所谓的“手动”其实就是借助 FTP 软件的“目录对比”、“同步浏览”来排查服务器端的 PHP 文件大小和最后被修改日期来进行分析清理的,因为一般来说 WordPress 站点的 wp-include 和 wp-admin 这两个目录里的文件基本上都是固定不变的,只有在升级、更新 WordPress 的时候才会有部分的覆盖替换,平时来说理论上是不会对这些文件进行修改操作的,通过与本地同样版本的目录文件进行对比可以快速的找出服务器上多出来的文件已经被修改过的文件(文件大小、最后修改日期),以 FileZilla FTP 软件为例,如下图所示:

可以看到通过 FileZilla FTP 软件的“同步浏览”和“目录对比”可以快速的找到被修改过的服务器端的文件,当然也可以找出“多出来”的 PHP 文件(这类基本上直接删除清理就可以了,几乎百分百肯定是恶意代码自建的)这里只是为了告诉大家这种方法的,具体还需要大家自行来理解和试用了,这种方法对于非 WordPress 平台的博客系统来说比较实用( WordPress 有安全插件可以扫描“恶意代码”)。

第三方插件、工具扫描排查

WordPress 明月一直比较推荐 Wordfence Security 插件的,这是一个集防火墙和恶意代码扫描为主的 WordPress 安全插件,由一个大型团队建立和维护,100%专注于 WordPress 安全性。虽然有收费模块,但是我们可以使用免费模块“Scan”来扫描自己 WordPress 站点排查含有“恶意代码”的 PHP 文件,虽然有一定的误报率(主要是一些正版插件、主题的加密组件会被误报),但是查找“恶意代码”绝对是事半功倍的高效率,需要注意的是,这个插件明月不建议常开启着,因为其防火墙和安全防护会对数据库造成一定的负载压力影响网站整体性能的发挥,一般需要的时候启用插件运行“Scan”扫描排查,完成后关闭插件保留以备不时之需就可以了。

  •  Wordfence Security 插件使用注意事项:

1、在开始“Scane”之前,为了保证扫描的稳定执行,最好停用其他所有的插件(仅仅保留 Wordfence Security 插件启用)。

2、因为  Wordfence Security 插件扫描会造成服务器 CPU 负载飙升,建议选择扫描时间段在凌晨以后进行或者是网站访问量最低的时候。

3、我们仅仅是借助 Wordfence Security 的“Scan”恶意代码的规则而已,所以注意记录扫描结果里提示的可疑 php 文件的路径,方便手动先备份后清理删除。

其实还有一个本地工具是个查找 PHP 文件恶意代码的最佳存在,那就是微软的 MSE,我们可以将服务器端的 PHP 文件下载到本地,让微软的 MSE 扫描检测也可以找到“恶意代码”、“木马后门”的。这点而比国内的那些啥“卫士”、“管家”、“XX 霸”之流强的不只是一点点哦。

第三方工具有不少选择,具体如何选择大家根据自己的情况自由选择就是了,这里不得不叹服一下 WordPress 的生态环境真的是最好的,  Wordfence Security 这样的插件存在就很能说明这个问题了。

最后明月要再次强调一下, WordPress 丰富的插件、主题是优势也是一把“双刃剑”,大家在选择、使用插件、主题的时候一定要慎重, WordPress 不安全主要的因素就是插件、主题这些不是 WordPress 可以控制的,毕竟都是第三方开发提交的。热衷于体验各种插件和炫酷主题的站长们 Wordfence Security 插件建议永久保留以备不时之需,有好好运营网站打算的站长们建议购买正规渠道的正版主题和插件,免费的、盗版的、破解版的都有“不干净”的隐患。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 展望 WordPress 5.0 会给我们带来哪些更新?

    目前 WordPress 最后的一个正式版已经到 4.9.7 了, WordPress 5.0 也即将到来了,那么 WordPress 5.0 会给我们带来哪些...

    明月登楼
  • Typecho 支持异步回调版的评论邮件插件 Mailer

    Typecho 的评论邮件通知是个比较麻烦的问题, Handsome 主题使用文档里推荐的是 CommentToMail 插件不知道为啥在明月自己的阿里云ECS...

    明月登楼
  • 分享两个著名的 WordPress 本地缓存插件

    虽然明月已经放弃使用 WordPress 本地缓存插件很久了(可参考【我为什么放弃了缓存插件?】),但是考虑到很多新手站长们依然在使用着虚拟主机服务器,所以今天...

    明月登楼
  • 【javascript】原生js更改css样式的两种方式

    下面我给大家介绍的是原生js更改CSS样式的两种方式: 1通过在javascript代码中的node.style.cssText="css表达式1;css表达式...

    外婆的彭湖湾
  • 12.3/12.4 PHP安装

    PHP安装目录概要 和LAMP安装PHP方法有差别,需要开启php-fpm服务 cd /usr/local/src/ wget http://cn2.php.n...

    运维小白
  • 用Swagger调用Harbor Registry的REST API

    Swagger是最流行的RESTful API开源工具,包含一整套代码库、编辑器、代码生成器等,可用于API的描述、定义、生成以及可视化等方面。我们可以在htt...

    Henry Zhang
  • elFinder远程代码执行漏洞(CVE-2019-9194)分析复现 附:利用POC

    elFilnder是一个开源的web的文件管理器,其界面和mac系统的finder差不多,用php开发,最近这个web app曝出了一个命令注入漏洞编号是CVE...

    用户5878089
  • 解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题

    我们都知道Jupyter notebook更换主题后看着会很舒服,但是有个问题主题更换后工具栏不显示了。

    砸漏
  • TOP中只查看某个或某些进程的信息

    例:php-fpm的信息 (1)得到php-fpm进程的pid [root@test ~]# pidof php-fpm 29618 29617 29616 2...

    joshua317
  • 一分钟应对勒索病毒WannaCry

    一、WannaCry 勒索病毒 勒索病毒WannaCry肆虐全球,利用Windows操作系统漏洞,因链式反应迅猛自动传播,校园电脑、个人电脑、政府机关都是重灾区...

    张果

扫码关注云+社区

领取腾讯云代金券