居然在运行日志里发现了eval(),再也不敢用开心版插件了
建这个小破站的初衷很简单,就是想随手分享些日常,记录点碎片化的知识,所以从一开始就没太把安全问题放在心上。现在回想起来,这大概就是后续一系列麻烦的根源。
事情得从那些来路不明的插件说起。忘了具体是在学科网还是别的什么资源分享站上,我下载了几个破解版插件,有做时间线的,也有搞缓存优化的。中间还删过几个觉得功能重复的优化插件,具体数量早就记不清了。
隐患的苗头其实半年前就出现了。当时在搬瓦工的服务器上,AdGuard 时不时会弹出规则提示,但因为太随机,很多时候又没动静,我平时主要也就是浏览网页,便想当然地以为是广告触发的,没往心里去。
直到前段时间,网站居然直接跳转到反诈网了,我这才意识到事情不简单。那会儿正好赶上 HostHatch 做促销,忙着换 VPS,加上站点本身也没什么值得分享和记录的内容,就把这事暂时搁下了。
今天,问题再次触发,我赶紧翻日志查看,结果直接懵了。关键日志记录显示:
wp-includes/viewer.php (1) : eval ()'d code on line 1PHP message: PHP Warning: fwrite () expects parameter 1 to be resource 。
一看到这个 eval (),我就知道不对劲了。20 年前我还是个 script boy 的时候,桂林老兵、4ngle、啊 D 这些分享工具和代码的黑客写木马,用的可全是这东西,实在是太熟悉了。而且,正常的 wp-includes 目录里哪会有 viewer.php 啊?
我判断既然报错了,这个文件应该就在目录下,可登录文件管理器查看,却压根找不到它。前端用 F12 检查,似乎是有些 js 文件有异常,但具体的实现方法实在提炼不出来。没办法,只能采取釜底抽薪的办法 —— 重装。
先去数据库里看了看,还好数据里没有存代码的痕迹,那只需要把所有文件替换成正常的就行。再看看后台现在用的插件,异常的也没几个了,之前的那些破解版插件早就换成官方的常规插件了,重新安装一下就行。
上传 WordPress,修改 config 文件里的数据库配置,忙活一通,现在总算一切回归正常了。
至于问题的根源,我几乎可以肯定是那些破解版插件惹的祸。因为差不多同时建的另一个站,除了内容不一样,几乎就是镜像站,却一点问题都没有。唯一的区别就是那个站没用过这些破解插件。
这次的恶意代码还用 eval () 这种上古技术,真是让人哭笑不得。想当年玩技术的还讲究点分享精神,现在做破解的,真是一点底线都没有了,夹带私货也太明目张胆了。