Guía completa para limpiar un sitio WordPress infectado

Guía completa para limpiar un sitio WordPress infectado

Un buen día descubres con horror que en los resultados de búsqueda aparecen referencias en tu sitio web hacia productos farmacéuticos. Revisas el contenido y encuentras enlaces extraños hacia sitios web que no deberían estar ahí… Para colmo de males, tu sitio es catalogado como peligroso por Google, con la mala imagen que eso supone de cara al exterior. ¿Y ahora qué hago?, te preguntarás.

Mantener la calma, fundamental

La primera reacción será experimentar un gran estrés, agobio y prisas por solucionar el problema. En una situación así es fácil cometer errores e incluso llevar a cabo acciones precipitadas que tal vez luego resulten irreversibles.

Así que lo principal es que mantengas la calma, respires profundamente y sigas cuidadosamente las siguientes indicaciones:

Proceso de desinfección

1. ACTIVA EL “MODO MANTENIMIENTO”

De esta forma vas a evitar el dar mala imagen y que tanto usuarios como motores de búsqueda detecten una actividad no deseada. Esto lo puedes hacer de dos maneras: instalando el plugin WP Maintenance Mode o, si tienes experiencia editando código, puedes  realizarlo de forma manual de la siguiente manera:

1.1. Crea un fichero en el ráiz al que puedes llamar por ejemplo “mantenimiento.php“.
1.2. Edita este fichero que acabas de crear y maquétalo a tu gusto. Para simplificar las cosas, un ejemplo de código sencillo sería el siguiente:

<html> 
<h1>Estamos realizando tareas de mantenimiento.</h1> 
<h2>Por favor, vuelva a intentarlo más tarde. Disculpe las molestias.</h2> 
</html>

1.3. Edita el fichero functions.php de tu tema WordPress y añade el siguiente código:

function modo_mantenimiento() {  
    global $pagenow;  
    if ( $pagenow !== 'wp-login.php' && ! current_user_can( 'manage_options' ) && ! is_admin() ) {  
        header( $_SERVER["SERVER_PROTOCOL"] . ' 503 Service Temporarily Unavailable', true, 503 );  
        header( 'Content-Type: text/html; charset=utf-8' );  
         if ( file_exists(ABSPATH . 'mantenimiento.php') ) {  
          require_once(ABSPATH . 'mantenimiento.php');  
        }  
        die();  
    }  
}  
add_action( 'wp_loaded', 'modo_mantenimiento' );

Con esto conseguimos evitar que nuestros usuarios vean cosas extrañas en nuestro sitio web y, por otro lado, mantenemos intacta la capacidad de acceder a la administración de WordPress.

2. IDENTIFICA EL PROBLEMA

El siguiente paso es tratar de identificar el problema. Para ello puedes visitar la web de diagnóstico de Google y ver si tu sitio está infectado con malware. Además, te recomiendo que utilices la herramienta gratuita de Sucuri.

Seguramente ahora ya dispongas de algo más de información. Con esto, más los síntomas que estés experimentando en tu sitio web, te recomiendo que te pongas en contacto con tu empresa de alojamiento para comunicarles el problema y sigue sus indicaciones. Esto es muy importante, sobre todo en alojamientos compartidos, ya que el ataque puede haber afectado a más de un sitio. Si el servicio técnico deja mucho que desear y no están por la labor de ofrecerte ayuda, plantéate cambiar de empresa de hosting al término de esta guía.

3. ANALIZA TU EQUIPO

Aunque no lo creas, suele ser muy común que el equipo que utilizamos habitualmente sea el principal origen de todos los problemas. Asegúrate de que tienes un buen antivirus instalado y actualizado, y realiza un primer escaneo completo. Existen muy buenas soluciones en el mercado como el Antivirus Kaspersky, Panda Global Protection, etc. Es bueno, además, complementarlo con herramientas especializadas en la detección de malware, como Malwarebytes Anti-Malware.

4. REALIZA UNA COPIA COMPLETA DEL SITIO Y DE LA BASE DE DATOS

Fundamental, antes de efectuar cualquier cambio, realizar una copia del sitio web y de la base de datos. De esta forma, evitarás riegos de pérdida de información si algo saliera mal. Esta copia la dejas guardada aparte.

5. CAMBIA TODAS LAS CONTRASEÑAS

Es imprescindible que cambies todas las contraseñas para impedir que los atacantes puedan seguir actuando sobre tu sitio web:

  • Acceso de WordPress: cambia la contraseña de todos los usuarios. Verifica que no han sido añadido usuarios administradores que no deberían estar. Elimina cualquier usuario que consideres sospechoso.
  • Panel de control del alojamiento.
  • FTP.
  • Base de datos.

Al modificar la contraseña de la base de datos, debes editar inmediatamente el fichero wp-config.php y escribir la nueva contraseña, ya que si no WordPress no podrá establecer conexión con la base de datos y tu sitio quedará inaccesible.

Además, en este mismo fichero debes cambiar las claves de seguridad. Para ello, accede al generador oficial de claves de seguridad de WordPress, copia el código generado, y reemplázalo donde corresponde en el fichero wp-config.php.

Aprovecha que estás editándolo para asegurarte de que no hay nada extraño en él.

6. LIMPIA FICHEROS Y DIRECTORIOS

Ya estamos preparados para comenzar con la limpieza:

6.1. Si utilizas algún plugin de caché, te recomiendo que lo deshabilites y limpies la caché, ya que si se queda algún fichero infectado en la caché, puede volver a dejar tu sitio infectado.

6.2. Instala el plugin WordFence o Anti-Malware Security and Brute-Force Firewall con el objetivo de realizar un chequeo de tu sitio web. Así podrás ver qué ficheros parecen infectados, qué líneas de código se han insertado y dónde. Esto es fundamental si utilizas un tema propio customizado.

6.3. Descarga tu tema, que se encuentra dentro de la carpeta /wp-content/ y ve revisando y editando los ficheros según las indicaciones del plugin de seguridad. Como resultado, tendrás en tu ordenador tu tema limpio. Para asegurarte, puedes analizar los ficheros de tu tema con tu antivirus y tu herramienta antimalware. Si empleas un tema comercial, te recomiendo que te descargues una copia limpia desde su sitio oficial.

6.4. Entra en el apartado de plugins de tu instalación de WordPress y apunta los plugins que tienes activos y descárgate las versiones más actualizadas de los mismos en tu equipo.

Muy bien. Por ahora disponemos de un tema y plugins limpios.

Revisa el contenido de tu sitio web y busca iframes, códigos raros, enlaces internos y externos que apunten a sitios sospechosos para eliminarlos.

6.5. Ahora conéctate vía FTP y ordena los ficheros por fecha de modificación. Presta especial atención a los últimos modificados, ya que normalmente suelen ser los que contienen código malicioso. Descarga la última versión de WordPress desde el sitio oficial. Descomprime el fichero descargado en una carpeta en tu ordenador. Revisa esa estructura de carpetas y ficheros y compáralo con la existente en tu servidor. Así podrás detectar ficheros extraños que no deberían estar.

6.6. A veces puedes encontrarte con que no es posible eliminar todo el código malicioso. En ese caso, lo más aconsejable es que sustituyas los ficheros de tu instalación de WordPress por los ficheros de WordPress descargados desde el sitio oficial.

  • Elimina todo lo que haya en el ráiz salvo la carpeta /wp-content/, el fichero .htaccess y el fichero robots.txt, que tendrás que revisar que no contengan nada raro.
  • En la carpeta /wp-content/ verás lo siguiente:
    • plugins: deberías eliminar todos los plugins e insertar las versiones nuevas que descargaste en tu equipo anteriormente.
    • themes: elimina todos los temas y sube única y exclusivamente tu tema ya limpio que tienes en tu ordenador.
    • uploads: revisa que no haya ficheros ejecutables .php. Si los hubiera, elimínalos.
    • index.php: revisa que no contenga códigos maliciosos.
  • En este punto, sube la copia de WordPress que descargaste, prescindiendo de la carpeta /wp-content/ y los ficheros wp-config.php y .htaccess, que ya tienes listos en tu servidor.

Comprueba que todo funciona correctamente y, para finalizar, elimina o deja comentada la función que creaste al comienzo del artículo y así desactivar el “modo mantenimiento”.

6.7. Para terminar, accede a las herramientas para webmasters de Google y solicita que realicen una revisión de tu sitio web. Si no sabes cómo hacerlo, puedes consultar la ayuda de Google.

7. PREVIENE FUTUROS ATAQUES

Ya tienes de nuevo tu sitio limpio y perfectamente operativo. Sin embargo, para evitar en la medida de lo posible que vuelvas a verte en situaciones comprometidas es fundamental que adoptes las siguientes medidas:

7.1. Cambia el prefijo de tu base de datos. Puedes utilizar el plugin Change DB Prefix. Eso sí, como siempre, antes de cualquier cambio importante, realiza una copia de seguridad de tu base de datos.

7.2. Modifica los permisos de los ficheros alojados en tu servidor a 755 y los directorios a 644. Olvídate de otorgar permisos 777 a ficheros o directorios. No des facilidades.

7.3. Genera ficheros index.php vacíos para evitar que los directorios sean accesibles a través del navegador.

7.4. Comprueba que no existe el usuario “admin”, ya que es el primero que buscan los posibles atacantes.

7.5. Crea un fichero .htaccess con el siguiente código:

<Files *.php> 
deny from all 
</Files>

Y ubícalo en la carpeta /wp-content/uploads. De esta manera evitarás que se ejecuten ficheros .php dentro de la carpeta “uploads“, algo que suelen intentar muchos atacantes.

7.6. Realiza copias de seguridad peródicas, tanto del sitio web como de la base de datos. Y guárdala en algún lugar seguro, a ser posible fuera del servidor de alojamiento.

7.7. Mantén actualizado tu WordPress, así como el tema y los plugins que utilices.

7.8. Elimina comentarios de tipo spam. Puedes ayudarte de plugins como AkismetAntispam Bee.

7.9. Activa un plugin de seguridad como Wordfence, All In One WP Security & Firewall o iThemes Security.

7.10. Utiliza siempre contraseñas seguras y educa a tus colaboradores en la vital importancia de esta práctica. Para facilitarte la vida, puedes utilizar este generador de contraseñas online.

7.11. Aplica, como complemento de seguridad, algún sistema de doble factor de autenticación como Latch, del que ya hablamos anteriormente en un artículo sobre aumentar la seguridad de WordPress con Latch.

¿Alguna vez han atacado tu sitio web? ¿Nos hemos dejado algún paso que consideras importante? ¿Conoces algún plugin o herramienta eficiente en la detección/prevención de ataques? Comparte con nosotros tu experiencia y, si necesitas ayuda, no dudes en contactar con nosotros.


Alvaro Pastor

Experto en maquetación Web bajo estándares W3C para el desarrollo de sitios web usables y accesibles. Apasionado de HTML5, CSS3, WordPress, manejo de Preprocesadores CSS, Responsive Web Design y la optimización de código. Entusiasta del SEO, la curación de contenidos y el linkbuilding. Amplia experiencia en formación a clientes.


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

  He leído y acepto la política de privacidad de la web *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Current ye@r *

6 comentarios

  • Eric dice:

    Me pareció genial tu post, lo pondré en práctica. Debo admitir, que no sé mucho de WordPress, pero me ha tocado documentarme a través de Post y foros que leo por la red. Actualmente administro un sitio Web que esta montado en WordPress, he recibido quejas, de que el Sitio Web redirecciona a los lectores a otras páginas, y le aparecen ventanas emergentes. Amigo que me sugieres para resolver esta situación con el WordPress que administro.

    Saludos de Antemano.

  • Hola, Eric.
    Muchas gracias por tu comentario.

    En tu caso, lo primero que te recomiendo es que identifiques el foco del problema, para ello hay algunas herramientas como Sucuri (https://sitecheck.sucuri.net). Te recomiendo además que contactes con tu proveedor de alojamiento y les informes del problema, ya que seguramente puedan darte las indicaciones pertinentes. Incluso, tal vez dispongan de una copia de seguridad previa a tus problemas que se pueda restaurar y, a partir de ahí, actualizar WordPress, plugins, cambiar contraseñas, etc. Pero eso depende de ya de cada caso: frecuencia de actualización de contenidos, fecha de la última copia, fecha inicia de los problemas, etc.

    En términos generales:
    1. Instala en tu equipo un buen antivirus actualizado y realiza un análisis de tu equipo.
    2. Realiza una copia de seguridad de tu sitio web y base de datos. Muy importante, para que no haya riesgo de pérdida de información.
    3. Si la redirección se dirige a la misma url, probaría a buscarla tanto en la base de datos como en los ficheros de tu instalación de WordPress y así localizar aquellos lugares en los que se produce la inserción e incluso el código malicioso que originó el problema.
    4. Instala un plugin de seguridad en WordPress y chequea todo el sitio. En el artículo menciono algunos, que te ayudarán a localizar ficheros problemáticos.
    5. Instala una copia limpia de WordPress siguiendo los pasos del artículo.
    6. Asegúrate de tener instalada la última versión de WordPress, actualizados los plugins y elimina aquellos que no uses.
    7. Para terminar, cambia las contraseñas de acceso a WordPress, FTP, Base de datos, panel de alojamiento…

    En todo caso, si sigues los pasos que detallo en el artículo, seguramente localizarás el foco del problema y podrás realizar la limpieza oportuna.

    Espero haberte sido de ayuda.

    ¡Un saludo!

  • dyp web dice:

    Para ayudarlos con un paso adicional, ya que nos pasó, desde el cpanel borrar todo de la carpeta temp, ya que si queda infectada pueden inyectar más codigo malicioso.

    • Muchas gracias por tu aportación, dyp web.
      Espero que ese paso adicional terminara por solucionar el problema y pueda servir también a cualquier otro usuario que se encuentre en la misma situación.

      Un saludo.

  • Maye Rosales dice:

    Hola, Alvaro!
    Tu post es excelente y muy completo, muchas gracias por la información brindada. Yo suelo construir con HTML y CSS temas personalizados que adapto para WordPress, y uso este CMS en la mayoría de mis proyectos, pero en cuestiones técnicas o de seguridad, no me considero para nada experta, así que si pudieras explicarme cómo entra a un sitio con WordPress un malware o cuáles son las posibles causas de vulnerabilidad para el mismo, te lo agradecería bastante y así prevenirlas en futuros proyectos. O quizá ya tengas algo escrito al respecto? De antemano gracias por tu labor. Te deseo un excelente día.

    • Muchísimas gracias por tus comentario, Maye. Me alegra saber que el artículo te ha sido de utilidad. Tus palabras dan un aporte de energía para seguir elaborando nuevos contenidos :)

      Dicho esto, respondo a tu pregunta:
      Las vías de infección por malware pueden ser muy variadas, pero, principalmente, puedo destacarte:

      - Una instalación de WordPress desactualizada. Ten en cuenta que desde el equipo de desarrollo trabajan mucho la seguridad y, por tanto, van sacando versiones que corrigen ciertas vulnerabilidades que puedan existir.
      - Ordenador infectado. Si tu equipo desde el que te conectas está infectado, pueden haberse hecho con tus credenciales FTP y haberte instalado ficheros en tu servidor.
      - Plugins o Temas desactualizados, que presenten vulnerabilidades que sean aprovechadas por terceros para infectar tu WordPress.
      - Plugins o Temas descargados de sitios de dudosa procedencia. Es recomendable que si quieres utilizar plugins o temas, estos los adquieras de sitios de confianza.

      No hay un sistema 100% seguro, pero el sentido común y las buenas prácticas hacen que puedas estar más tranquila.