最近很多小伙伴一直在讨论网站被黑和下载的免费 WordPress 主题插件被挂马的话题,那么今天小 V 就来教大家如何识别 WordPress 主题插件是否被留了后门。

首先来说下 WordPress 的运行环境,相信稍微有点常识的站长都知道 WordPress 是一款运行在 php+mysql 构架之上的建站系统,而且 wordpress 主题插件都是编写成.php 后缀的可执行文件这是为什么 wordpress 的免费主题插件很容易留后门的问题。

既然都是由 php 编写的,那么我们只要知道一般 php 后门常用程序就能一定程度上察觉到主题插件中是否存在后门木马,下面小 V 列出一些常见 php 后门函数:

执行系统命令: system, passthru, shell_exec, exec, popen, proc_open(高危)
代码执行: eval, assert, preg_replace('/$pattern/e')(高危)
文件操作:file_get_contents, file_put_contents, fputs, fwrite(高危)
字符串加密解密压缩解压隐藏:base64_decode, gzinflate, gzuncompress, gzdecode, str_rot13, base64_decode, gzcompress, chr(可疑)
wordpress 创建后门用户:wp_create_user, WP_User, set_role(高危)

如果在主题中小 V 标注的高危代码基本就可以确定这款主题很有问题了,基本上都是为了留后门或者是做些小动作了。如果是发现了本文标注的可疑代码那就要注意了很有可能加密部分的代码就是后门。

很多小伙伴肯定不懂 preg_replace(‘/$pattern/e’) 这段代码是什么意思,下面小 V 就来给大家解释下,preg_replace 函数使用 e 修饰符之后在执行逆向引用替换完之后会将替换的代码当作 php 代码运行,所以也是一种非常常见的后门代码。

在检测主题插件是否包含后门的时候只要用文本搜索工具或者软件搜索主题插件的 php 文件是否包含以上关键字,在搜索到 preg_replace 时需要人工对比下代码查看是否包含 e 修饰符,如果主题文件出现大量的 chr(2).chr(3).chr(58) 这样类似的代码也要小心了,另外发现主题文件出现一大堆无规则的字符也要小心了一般都是加密后的代码很可能隐藏了后门。

PS:由于平时整理的主题和插件比较多,所以很难将所有的投稿文件都检查一边。最多也就检查下几个关键文件是否挂马,所以请大家在下载主题后尽量再自己检查一遍。