¿Qué hacer si una web hecha con WordPress ha sido hackeada?

PHPWordPress

Puede que te des cuenta cuando accedas a tu página web y tu navegador muestre una advertencia de seguridad acerca de que la web a la que intentas acceder contiene software malintencionado. En otras ocasiones sencillamente verás publicidad en tu web, fragmentos de texto que no deberían estar o código que no reconoces dentro de tus archivos de WordPress o en la base de datos. Es muy sencillo para cualquier usuario sin apenas conocimientos de programación realizar una web con WordPress e instalar un bonito tema, pero dado que WordPress es el CMS más utilizado, también existen muchísimas personas buscando vulnerabilidades para crear scripts o arañas que recorran los distintos servidores de internet para aprovecharse de las mismas y lograr hacerse con el control de las webs o lo que es peor, con el control de los servidores.

El número de páginas con WordPress hackeadas diariamente es altísimo y va cada vez en aumento. Si vuestra web ha sido hackeada aquí tenéis unos pasos para saber por dónde empezar. Si jamás habéis tenido este tipo de problemas, os recomiendo igualmente que leáis este artículo y que intentéis seguir las directrices aquí expuestas, ya que puede que sea cuestión de tiempo que os toque a vosotros.

Vulnerabilidades Generales

Vamos a hablar primero de una serie de vulnerabilidades generales que no son exactamente de WordPress. Si sois usuarios avanzados o programadores podéis avanzar a la siguiente sección, pero si no es el caso, os recomiendo que las tengáis en cuenta.

Vuestro propio ordenador

Existe la posibilidad de que hayáis sido infectados por algún troyano o software malicioso que os haga un seguimiento y obtenga todas las contraseñas que introduzcáis en vuestro navegador, incluyendo la de WordPress. Lo que debéis hacer si tenéis alguna sospecha de que ésto está pasando, es realizar un escaneo completo de vuestro ordenador local usando vuestro antivirus preferido. Si vuestra máquina local está infectada y no solucionáis primero el problema, volverá a aparecer aunque logréis arreglar vuestra web.

¿Usas una cuenta de Hosting compartida?

Existe la posibilidad de que sea el servidor en el que se hospeda vuestra web el que ha sido hackeado, por lo que el problema puede afectar a todas las webs del mismo. Aún así, puede que el origen del problema sea vuestra web, algo de lo que seguramente os informará vuestro proveedor de hosting contactando con vosotros. Si el atacante tiene el control de un servidor, puede ejecutar un script para buscar todas las instalaciones de WordPress de todos los usuarios e inyectar o reemplazar código o archivos completos de WordPress. En el caso de que no sea vuestra culpa no es mucho lo que podéis hacer salvo reemplazar los archivos afectados, aunque es recomendable tener una copia de seguridad reciente a mano.

¿Usas un servidor dedicado?

Si eres un usuario avanzado y usas un servidor dedicado, es recomendable tenerlo actualizado así como seguir las recomendaciones generales de seguridad para vuestro sistema operativo. Si usáis un panel de Hosting ya sea CPanel, Plesk, Webmin o cualquier otro, es importante que esté actualizado para que uno de los muchos bots que recorren internet escaneando los puertos y configuraciones de cada servidor no logre hacerse con su control.

Es importante monitorizar los logs de acceso de vuestro servidor para banear temporalmente las IPs de los atacantes usando alguna aplicación como Fail2Ban. En el enlace podéis ver cómo instalar y configurar Fail2Ban, aunque ya viene de serie con muchos de los paneles de Hosting más conocidos. Acerca de los accesos SSH, hay varias consideraciones de seguridad que podéis aplicar como usar claves públicas o desactivar los accesos del usuario root.

Vulnerabilidades de WordPress

Vamos a hacer un repaso a las vulnerabilidades más comunes y cómo evitarlas.

Ataques de fuerza bruta

Si vuestra contraseña es sencilla y no usáis un captcha, puede ser muy fácil para un script obtener vuestra contraseña a base de intentos de acceso. Es importante mezclar letras, números y caracteres especiales. En las últimas versiones de WordPress ya se incluye una utilidad que automáticamente comprueba la seguridad de nuestra contraseña según la vamos escribiendo.

Aparte de vuestra contraseña, es importante no utilizar nombres de administrador como admin, que es el que viene por defecto, o similares. Además, debéis aseguraros de que el nombre que se muestra públicamente no es vuestro nombre de usuario, sino un alias del mismo que podéis configurar en vuestra página de perfil.

Por último, estos ataques de fuerza bruta pueden llegar a saturar vuestra web hasta provocar que se consuman todos los recursos de vuestro VPS o de vuestro servidor, haciendo que el rendimiento de vuestra página sea muy malo o incluso impidiendo el acceso a sus visitantes. Para solucionar ésto podéis utilizar plugins de seguridad como Wordfence SecurityBulletProof SecurityAll In One WP SecuritySucuri Security o algún otro de los muchos que hay disponibles. A nivel de servidor también podéis configurar Fail2Ban para que bloquee las IPs de los atacantes a bajo nivel, lo cual implica mayor seguridad.

Problemas de seguridad con temas y plugins

Es posible que vuestro tema contenga algún error de programación que conlleve algún tipo de vulnerabilidad, siendo algo que ocurre incluso son los más reputados temas. Por seguridad, si vuestro tema es gratuito, es recomendable usar solamente temas descargados de los repositorios oficiales de WordPress. En caso de que sea de pago ya contáis seguramente con un soporte por parte de los autores y ciertas garantías.

Lo mismo ocurre también con los plugins que instaléis. Incluso antes de probar un plugin, debemos leer siempre las notas del mismo y buscar algo de información o comentarios de otros usuarios, puesto que incluso cuando lo desinstalemos, puede que algún archivo o dato permanezca aún en la base de datos.

Si nuestra instalación de WordPress o alguno de nuestros temas y archivos no está actualizado

La comunidad de WordPress encuentra y arregla errores y agujeros de seguridad cada vez que sale una nueva versión. Con cada nueva versión, se hacen públicos los cambios y por tanto los errores de seguridad que se han encontrando, significando que dicha información estará disponible desde ese momento para personas que quieran aprovecharse de aquellas otras que optan por no actualizar WordPress. Actualiza tu versión de WordPress lo antes posibles y activa las actualizaciones automáticas para, al menos, las revisiones de seguridad.

Es habitual no tener activadas las actualizaciones automáticas para evitar posibles errores o conflictos con temas y plugins. Si queréis configurar las actualizaciones automáticas podéis hacerlo editando el archivo wp-config.php y agregando:

Para activar todas las actualizaciones automáticas para el núcleo de WordPress tanto importantes como menores:

define( 'WP_AUTO_UPDATE_CORE', 'true' );

Para deshabilitar todas las actualizaciones automáticas para el núcleo de WordPress:

define( 'WP_AUTO_UPDATE_CORE', 'false' );

Para habilitar solamente las actualizaciones automáticas menores para el núcleo de WordPress:

define( 'WP_AUTO_UPDATE_CORE', 'minor' );

Es posible que nada más salir una nueva versión de WordPress, ésta no sea compatible con algún tema o plugin que use vuestra web. Aquellos temas y plugins reputados o con versiones de pago seguramente tardarán como mucho unas pocas horas en actualizarse para que sea compatible con la nueva versión, pero aquellos menos conocidos o sin soporte pueden tardar bastante o incluso no ser actualizados nunca; de ahí la importancia de ser cuidadosos a lo hora de seleccionar lo que instalamos.

Qué hacer cuando hemos sido hackeados

Sabremos que hemos sido hackeados porque nuestra página contiene enlaces a otra páginas no deseadas, porque nos redirige automáticamente a otras webs con publicidad o porque se nos muestran mensajes de advertencia. En el caso de que sea demasiado tarde y nuestra instalación de WordPress ya haya sido hackeada, lo primero es mantener la calma y no tomar medidas a la desesperada. Lo siguiente es seguir los pasos que se describen a continuación:

  1. Pasa el antivirus a tu propio ordenador para asegurarte de que no hay ningún archivo problemático en tus copias de seguridad o en tus archivos locales. Sí, los antivirus también miran el código de los archivos individuales php para detectar código sospechoso
  2. Cambia absolutamente todas las contraseñas de tu cuenta de Hosting: Cuenta de Hosting, cuenta FTP, MySQL y contraseña de acceso SSH en su caso. Hazlo para cualquier usuario que tenga acceso a tu página.
  3. Si tu cuenta de hosting está en un servidor compartido puedes pasar al siguiente apartado; pero si usas un VPS o un servidor dedicado, debes asegurarte de que las otras páginas de tu servidor no están también hackeadas para descartar que el problema no haya ido a mayores. Algo muy útil en este último caso es mirar los logs de acceso. Si tienes otras webs hackeadas, lamentablemente debes aplicar estos consejos individualmente para cada web.

Si disponemos de una copia de seguridad reciente

En un mundo perfecto seguramente tendrás alguna copia de seguridad reciente almacenada en algún lado que directamente puedes usar para reemplazar tanto los archivos de tu web (puedes hacerlo mediante FTP) como la base de datos (puedes hacerlo borrando la base de datos actual e importando la de la copia de seguridad mediante phpMyAdmin). Si habéis arreglado así el problema, aún así es importante que identifiquéis los archivos problemáticos para saber en dónde estaba el problema y tener la seguridad de que vuestra copia de seguridad está limpia. Podéis hacerlo comparando ambas versiones con algún programa para filtrar aquellos archivos que han sido modificados, siendo más sencillo así detectar aquellos que han sido modificados cuando no deberían. Una vez hecho ésto podéis pasar al apartado de recomendaciones para evitar que esto vuelva a suceder, pero si no es el caso, seguid leyendo el siguiente apartado.

Si no disponemos de una copia de seguridad

Si no disponéis de ninguna copia de seguridad nos encontramos ante uno de los peores casos posibles, ya que tendremos que arreglar la web en su estado actual. Lo primero, será hacer una copia de seguridad de nuestra web aunque se encuentre hackeada, ya que puede que nos confundamos a la hora de realizar cambios, conservando así siempre el estado de los archivos en el punto de partida. Lo primero que debemos hacer es reemplazar el archivo wp-config.php por el correspondiente a nuestra versión de WordPress y volver a introducir los datos de nuestra base de datos o configuraciones que hayamos aplicado, algo que haremos rápidamente.

La parte complicada está en identificar los posibles archivos que han sido modificados para agregar puertas traseras, algo muy común. Habitualmente los archivos que los atacantes modifican son:

  1. Los archivos de los temas: Es el caso más común y también lo es que los archivos infectados estén en nuestro tema principal, aunque por seguridad es muy recomendable eliminar y volver a incluir los archivos de nuestros temas secundarios.
  2. Los plugins: Son también un lugar en el que los atacantes pueden esconder el código inyectado. El motivo por el que es un buen lugar para esconder el código es que hay muchos plugins que no siguen buenas prácticas de programación y están llenos de vulnerabilidades. En otras ocasiones sencillamente la gente no se fija en estos archivos o los plugins no son actualizados por los administradores de la web. Es importante desinstalar todos los plugins asegurándonos de que todos los datos de su directorio (por defecto «/wp-content/plugins/nombre_del_plugin») han sido borrados. Una vez hecho ésto, esperad a que la página esté limpia antes de volver a instalarlos.
  3. El directorio de archivos que hemos subido: Es un buen objetivo para los atacantes debido a que es un directorio con permisos de escritura que además contiene muchísimos archivos ordenados por año en muchos directorios y que además apenas se mira. Su ruta por defecto es «/wp-content/uploads«. Lo dicho, buscad archivos sospechosos en estos directorios y si no los habéis subido vosotros, eliminadlos.
  4. El directorio de includes: El directorios «/wp-includes» también es un lugar habitual, aunque menos frecuente.

En general, los atacantes suelen inyectar código en más de un lugar para asegurarse de tener más de una puerta trasera. Los archivos suelen ser archivos con extensión php que intentan hacerse pasar por archivos propios de la instalación de WordPress como wp-access.php o wp-user.old.php; en general archivos que no existen o que deberían estar en otro lugar. En otras ocasiones los archivos pueden estar en formato .zip o incluso tener la extensión de una imagen estando codificados en base64.

Para ayudarnos a identificar y a eliminar los archivos problemáticos podemos ayudarnos de plugins como éste que ayudan a limpiar nuestra página. Existen también muchos otros plugins para detectar malware.

Una vez creamos que está todo en orden, volvemos a instalar los plugins y actualizamos tanto WordPress como nuestros temas y plugins a la última versión. Por último cambiamos de nuevo todas las contraseñas para estar más seguros.

¿Qué hacer de ahora en adelante?

De ahora en adelante debemos asegurarnos de que seguimos las mejores prácticas de seguridad para WordPress.


Avatar de Edu Lazaro

Edu Lázaro: Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

👋 Hola! Soy Edu, me encanta crear cosas y he redactado esta guía. Si te ha resultado útil, el mayor favor que me podrías hacer es el de compatirla en Twitter 😊

Si quieres conocer mis proyectos, sígueme en Twitter.

Deja una respuesta

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

“- Hey, Doc. No tenemos suficiente carretera para ir a 140/h km. - ¿Carretera? A donde vamos, no necesitaremos carreteras.”