Portada Wordpress Detectado Código Malicioso en WordPress – La Guía de los 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:
* Si necesitas backups en Hostinet te ofrecemos este servicio. CLICK AQUÍ
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.
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.
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.
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.
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');
Para descargar la base de datos podemos hacerlo desde cPanel o desde phpMyAdmin
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.
http://www.TuWeb/readme.html
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.
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.
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.
Nos dará una alerta indicando si estamos seguros de revocar los privilegios al usuario. Le diremos que si.
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.
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.
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.
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.
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.
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.
Recordar revisar wp-content ya que el resto de archivos los vamos a machacar con una copia limpia.
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
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.
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.
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.
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.
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.
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.
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.
Ahora si se intenta editar algo directamente desde el panel de WordPress nos aparecerá este mensaje:
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
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:
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.
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.
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.
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