Detectado Código Malicioso en WordPress – La Guía de los 8 Pasos

Categorias: Tutoriales, Wordpress

codigo malicioso wordpres guia 8 pasos

Cada vez es más común encontrarse con instalaciones de WordPress infectadas con código malicioso.

Al ser un CMS tan popular, WordPress está siempre en el ojo del huracán. Para un hacker es mejor encontrar una vulnerabilidad que pueda explotar en cuantos más sitios mejor.

En esta guía podrás encontrar la solución para recuperar WordPress una vez recibido el aviso de que se ha detectado código malicioso en vuestro WordPress

Para recuperar nuestro querido WordPress sólo debemos seguir la guía de los 8 pasos. No son complicados de seguir y podemos resumirlos en:

  1. Bloquear la Web
  2. Realizar las Copias de Seguridad
  3. Cambiar Contraseñas
  4. Borrar los Archivos WordPress
  5. Revisar los Archivos
  6. Reinstalar WordPress
  7. Subir Archivos Revisados
  8. Modificar el Archivo wp-config.php
     

* Si necesitas backups en Hostinet te ofrecemos este servicio. CLICK AQUÍ

1 – Bloquear la Web

bloquear wb desde htaccess

En cuanto sepamos que nuestro sitio está infectado por código malicioso lo primero que debemos hacer es bloquear la web.

Para eso sólo tenemos que acceder al archivo .htaccess y añadir este código al principio:

# Bloquear el acceso a todo el mundo
deny from all

Con bloquearemos toda la web y ningún usuario podrá infectarse si visita nuestra web.

Para saber como editar el archivo .htaccess podéis seguir esta guía.
 

2- Realizar Copias de Seguridad

Como vamos a eliminar todos los archivos del servidor tenemos que hacer una copia de seguridad ya que no queremos perder todas las horas que hemos invertido.
 

Copiar Todos los Archivos

 

copia de seguridad de public_html

Debemos descargar todo lo que se encuentre dentro de la carpeta public_html de nuestro hosting o el directorio donde esté instalado el WordPress con problemas.

La mejor manera es usando un cliente de FTP como FileZilla, podéis ver una guía de FileZilla aquí.

Antes de descargar los archivos con Filezilla debemos seleccionar la opción Preservar información horaria de los archivos transferidos que encontraremos en el menú Transferencia.

preservar informacion en FileZilla

 

Es posible que os apareca una alerta. La aceptáis y descargáis el directorio a vuestro disco duro. Esto nos vendrá muy bien cuando llegue el momento de revisar los archivos modificados en el paso 5.


Copiar la Base de datos

Cuando se hayan descargado todos los archivos debemos hacer una copia de la base de datos.

Primero tenemos que saber cual es el nombre de la base de datos. Si sólo tenemos una no hay problema pero si tenemos varias podemos saber cual desde el archivo wp-config.php de nuestro WordPress y buscado:

define('DB_NAME', 'nombre de la base de datos');

averiguar el nombre de la base de datos

Para descargar la base de datos podemos hacerlo desde cPanel o desde phpMyAdmin


Versión de WordPress

También tenemos que saber que versión de WordPress estamos usando tenemos varias formas aunque algunas no funcionarán según la versión de que estemos usando, ya que se ocultan por motivos de seguridad.

  1. Si podemos acceder al escritorio de nuestro WordPress sólo debemos bajar y ver la versión instalada en la esquina inferior derecha.

Cual es mi versión de WordPress

  1. Si habéis instalado WordPress con Softaculous debéis acceder a cPanel y buscar la opción Listado de Instalaciones y ahí podemos ver las versión que tengamos.
    Para saber donde se encuentras esta opción en Softaculous ver esta guía y buscar la sección Listado de Aplicaciones.
  2. Acceder al readme, aunque es posible que no se encuentre. Podéis probar desde:
http://www.TuWeb/readme.html
  1. Acceder a wp-login.php desde Chrome y acceder al código desde Más herramientas… / Herramientas desarrolladores y buscar donde pone ver= la versión. Si aparecen un montón de letras y números estará cifrado y no nos valdrá. En las últimas versiones de WordPress ya estarán cifradas.
http://www.TuWeb/wp-login.php

Cuando sepamos que versión tenemos debemos descargar desde aquí una copia de la versión. Debe de ser la misma.

Esta copia la dejaremos guardada en nuestro disco para un paso posterior.
 

3- Cambiar la Contraseña y Usuario de la BBDD

Si un hacker ha entrado en nuestro WordPress, es posible que nuestras contraseñas estén comprometidas, así que siempre es buena idea cambiarlas.

Es imprescindible cambiar la contraseña y el usuario de la base de datos.

Para cambiar esto debemos ir a la sección de Base de datos MySQL dentro de nuestro cPanel.

bases de datos mysql en cPanel

Como ya sabemos el nombre de la base de datos del paso anterior no nos costará encontrarla así como el usuario añadido.

Cuando la localicemos podemos eliminar el usuario con privilegios que tenga asignado haciendo click en el cubo de la basura que aparece al lado del usuario.

borrar usuario de la base de datos

Nos dará una alerta indicando si estamos seguros de revocar los privilegios al usuario. Le diremos que si.

revocar privilegios de usuario de la base de datos

Al volver veremos que la base de datos ya no tiene ningún usuario asignado por lo que vamos un poco más abajo y añadimos un nuevo usuario.

añadir nuevo usuario a la base de datos

Es importante recordar que no tenemos que poner el mismo nombre de usuario ni la misma contraseña.

Podemos usar el generador de contraseñas. Es importante apuntar, para un paso posterior, tanto el nombre de usuario como la contraseña.

Ahora sólo nos queda añadir el nuevo usuario a la nueva base de datos. Recordar hacer click en Todos los privilegios en la siguiente pantalla.

añadir usuario a la base de datos


4- Borrar los Archivos WordPress

Tenemos que eliminar todos los archivos de WordPress, pero antes vamos al Administrador de Archivos y seleccionamos Last Modified dentro del directorio donde esté instalado el WordPress con problemas.

Esto lo hacemos para ver los últimos archivos modificados ya que nos puede indicar donde tenemos que mirar para localizar modificaciones en los archivos. Tenemos sacar la lupa en el directorio wp-content que es el más habitual para añadir archivos o modificarlos.

A modo de prueba hemos modificado anteriormente el archivo wp-mail.php, y como vemos en la imagen aparece modificado hoy.

archivo modificado en WordPress

Podemos anotarlo o hacer capturas de pantalla, pero nos ahorrará mucho tiempo a la hora de revisar los archivos de wp-content.

Los demás archivos los vamos a substituir por una copia limpia, por lo general, pero los archivos de wp-content si que deberíamos revisarlos. Al menos los que se han modificado últimamente.

También debemos comprobar si hay algún archivo dentro que no concuerde con la instalación de WordPress que hemos descargado en el paso 2.

Cuando tengamos claro que ficheros tenemos que eliminar todo menos el archivo .htaccess.

Podemos hacerlo desde el Administrador de Archivos o desde FileZilla pero recordar antes haber realizado la copia de seguridad del paso 2.

eliminar todos menos este


5- Revisar los Archivos

Ahora tenemos que buscar los archivos con problemas. Si recordáis el paso anterior, hemos visto que aparecía como archivo modificado el wp-mail.php.

Así que abrimos el archivo que hemos descargado de nuestro host con cualquier editor de texto y también abrimos el mismo archivo de la copia de WordPress limpia que nos hemos descargado en el paso 2.

Ahora si las comparamos podemos ver que en la linea 9 hay una diferencia.

diferencias en el código

En este caso en algo inocente que hemos añadido nosotros para que se vea una diferencia, pero el proceso real es el mismo.

Si habéis seguido las indicaciones de marcar la opción Preservar información horaria de los archivos transferidos que encontraremos en el menú Transferencia en la copia que habéis descargado con FileZilla lo tendréis mucho más fácil ya que podemos seleccionar Buscar por Fechas y localizar así los últimos ficheros modificados.

Esto es importante porque si se ha inyectado código en algún archivo aparecerá el primero en la fecha de modificación.

En la imagen de ejemplo (Windows 10) podéis ver como el archivo wp-mail.php, que modificamos a modo de prueba en un paso anterior, nos aparece el primero, por lo que sería el primero que revisaríamos.

buscar fechas en windows 10

Recordar revisar wp-content ya que el resto de archivos los vamos a machacar con una copia limpia.


6- Reinstalar WordPress

En el paso 2 hemos hecho hincapié en saber que versión de WordPress estábamos usando y en descargar una copia limpia.

Ahora es el momento de subirla al directorio en el que hemos borrado todos los archivos del paso 4.

Sólo debemos descomprimir el archivo que hayamos descargado y subirlos con FileZilla al directorio que corresponda.

Hay que subir los archivos que están dentro del directorio wordpress, no el directorio wordpress

subor archivos WordPress

Recordar que en el hosting sólo debería estar el archivo .htaccess, todo lo demás no hemos eliminado.

Una vez se hayan subido los archivos podemos pasar al siguiente paso.


7- Subir Archivos Revisados

Ya tenemos un nuevo WordPress subido en nuestro alojamiento y nuestro directorio wp-config revisado, así que sólo queda subir el directorio revisado al hosting.

Como ya existe un directorio wp-config nos pedirá confirmación para substituir los archivos.

Le decimos que si y esperamos a que terminen de subirse los archivos.

sobrescribir archivos


8- Modificar el Archivo wp-config.php

Ahora mismo la web no se verá ya que, si recordáis, hemos cambiado el usuario y la contraseña de la base de datos en el paso 3.

Así que debemos añadir el nuevo usuario y la contraseña que hemos anotado anteriormente en el archivo wp-config.php.

Localizamos el archivo wp-config.php original que hemos descargado de nuestro hosting, no el de la copia limpia de WordPress, lo abrimos con cualquier editor de texto y localizamos y modificamos estos datos:

/** Tu nombre de usuario de MySQL */
define('DB_USER', 'nombredeusuario');
/** Tu contraseña de MySQL */
define('DB_PASSWORD', 'Aquí Tu Nueva Contraseña');

También tenemos que cambiar las claves únicas de autentificación. Es muy sencillo de hacer ya que no hay que recordarlas. Sólo hay que ir a este enlace, copiar las lineas y pegarlas en el wp-config.php substituyendo las que ya están.

generar contraseñas

Son las 8 lineas que empiezan por:

define('AUTH_KEY',         'put your unique phrase here');
define('SECURE_AUTH_KEY',  'put your unique phrase here');
define('LOGGED_IN_KEY',    'put your unique phrase here');
define('NONCE_KEY',        'put your unique phrase here');
define('AUTH_SALT',        'put your unique phrase here');
define('SECURE_AUTH_SALT', 'put your unique phrase here');
define('LOGGED_IN_SALT',   'put your unique phrase here');
define('NONCE_SALT',       'put your unique phrase here');

Ahora sólo queda guardar los cambios y subir el archivo al hosting, dentro de public-html o del directorio donde esté el WordPress.

subir wp-config.php


Optimizar la Seguridad de WordPress

Con estos pasos ya debería bastar, pero como no queremos que nos vuelva a pasar vamos a realizar una serie de acciones para evitar que nos vuelva a pasar algo parecido.

Estas recomendaciones las iremos ampliando según detectemos que pueden ser útiles así que revisar la guía de vez en cuando para estar protegidos.


Bloquear la Edición de Temas desde WordPress

Como todos sabréis, en WordPress existe un editor de temas desde el cual podemos realizar modificaciones en el código del tema que tengamos activo.

Si bien está pensado para ahorrar tiempo cuando se tienen que realizar pequeñas modificaciones en el tema, también es una puerta abierta si alguien ha vulnerado la contraseña de acceso a nuestro WordPress.

Así pues, bloquear la edición de temas desde WordPress es algo que debemos impedir. Por suerte es muy fácil.

Sólo debemos acceder a nuestro archivo wp-config.php y añadir el siguiente código:

#DESHABILITAR LA EDICIÓN DESDE EL ADMINISTRADOR DE WORDPRESS
define('DISALLOW_FILE_EDIT', true);

Para añadir este código tenemos que acceder al archivo mediante FTP o desde el Administrador de Archivos de nuestro cPanel.

Dentro de nuestra instalación de WordPress debemos buscar el archivo wp-cofig.php, seleccionarlo y hacer click en “Editor de código”, en la opciones que aparece en la parte superior del Administrador de Archivos.

editar codigo desde arministrador de archivos

Después sólo nos queda pegar las dos linea de código y guardar los cambios para desactivar el editor de temas en WordPress.

pegar codigo en wp-config.php

Ahora si se intenta editar algo directamente desde el panel de WordPress nos aparecerá este mensaje:

sin permisos para editar


Evitar el Listado de Archivos

no indexar archivos

Esto es muy sencillo. Sólo añadiendo una linea en nuestro archivo .htaccess podemos evitar que se listen los archivos del hosting para ponerle las cosas más difíciles a los atacantes.

Options -Indexes


Bloquear el Acceso a Archivos Sensibles a IP's de Fuera de España

Es un hecho que la gran mayoría de ataques a WordPress provienen de fuera de España.

Podemos bloquear las direcciones IP que provengan de otros países desde el archivo .htaccess para que no puedan acceder a los archivos sensibles, como wp-admin.php, wp-login.php y xmlrcp.php.

Tan sólo debemos añadir el siguiente código en nuestro archivo .htaccess:

<IfModule mod_geoip.c>
        GeoIPEnable On

        SetEnvIf Remote_Addr "^" Filtered=0
        SetEnvIf Request_URI "^/wp-admin" Filtered=1
        SetEnvIf Request_URI "^/wp-login" Filtered=1
        SetEnvIf Request_URI "^/xmlrpc.php" Filtered=1

        SetEnvIf Remote_Addr "^" BlockCountry=1
        SetEnvIf GEOIP_COUNTRY_CODE ES BlockCountry=0

        SetEnvIfExpr    "%{ENV:Filtered} == '1' && %{ENV:BlockCountry} == '1'" Block

        Order Allow,deny
        Allow from all
        Deny from env=Block

</IfModule>

Si haces click aquí te explicamos donde localizar el archivo .htaccess.

Si echamos un vistazo a las últimas estadísticas de ataques de fuerza bruta por países, es algo a tener en cuenta:

lugar ataques fuerza bruta en WordPress


Instalar un Plugin para Reforzar la Seguridad

En el paso 4 hemos comentado que habíamos editado el fichero wp-mail.php a modo de prueba.

En este WordPress tenemos instalado un plugin llamado Wordfence Security para mejorar la seguridad del mismo, pues bien, a los pocos minutos de modificar el archivo wp-mail.php hemos recibido un email de alerta crítica indicando un cambio en uno de los archivos del core de WordPress.

alerta core modificado

Imaginad los rápido que podemos averiguar que archivos han sido modificados en caso de ataque teniendo instalado un plugin como este.

Hay varios plugins de seguridad para WordPress como Wordfence, la mayoría con versiones gratuitas, y las ventajas de tenerlo instalado pueden ser muchas.



Recuerda…

En Hostinet todos nuestros Hosting WordPress SSD vienen de serie con un panel de control cPanel. Además, pensamos que lo mejor es siempre utilizar cuentas personalizadas con tu propio dominio con el fin de personalizar tu negocio o de dotar de seriedad a tus comunicaciones.
De hecho, por muy poco al mes puedes contratar el plan de hosting que mejor se adapte a tu proyecto web, así como también un dominio bajo el cual tener tu propio email o todas las cuentas de correo electrónico que desees.

Hosting WordPress

En Hostinet trabajamos desde hace más de 15 años con servidores ubicados en España (Madrid); ofreciendo un precio muy ajustado, una seguridad impenetrable y una confianza sin igual a todos nuestros clientes.

HOSTINET = SEGURIDAD + CONFIANZA + PRECIO + 15 AÑOS DE EXPERIENCIA