Hoy te traigo un post de invitado, donde Nacho, responsable de isanlab, nos habla sobre cómo desinfectar un WordPress hackeado, uno de los caballos de batalla a los que nos podemos enfrentar si no tomamos las precauciones debidas desde el principio en nuestro sitio web. Espero que te resulte interesante. Te dejo con él.
El descubrimiento
Sí, ha llegado ese día que habías oído hablar, que has leído por la red que aunque no tiene porque, puede pasar. Te has levantado, has ido a ver que todo está correcto en tu web o proyecto y lo que ves es un mensaje de que tu web ha sido hackeada.
O peor aún, ni te has dado cuenta y lleva días o meses hackeada y si nadie se da cuenta y te avisa, así seguirá por mucho tiempo.
En muchos casos, hay clientes que contratan mis servicios de Soporte para WordPress cuando ya ha sido infectado y ha tardado mucho en darse cuenta. Esto ocurre cuando el código que se ha inyectado realiza envíos de spam a través de la web o crea multitud de páginas ocultas en el backoffice para el dueño, pero legibles para Google.
Tanto es así que si realizamos una búsqueda en Google llegamos a ver miles y miles de url’s indexadas que no tienen nada que ver con la web. Por ejemplo una vez llegué a ver indexadas casi 14000 páginas en una web corporativa que sólo tenía cinco creadas por el dueño.
Una vez ha llegado el día D, te preguntarás cuáles son los pasos más importantes para recuperar un WordPress hackeado.
La concienciación
Aunque suene muy habitual, uno de los puntos más importantes y que a día de hoy se sigue incidiendo en el por parte de las empresas de seguridad informática, es concienciar al usuario de un buen uso y de utilizar medidas preventivas:
- Utiliza contraseñas difíciles. Sí, cuesta recordarlas, pero es totalmente necesario. De nada nos vale tener la web en wordpres más bonita, si luego tenemos disponible la url de login y una contraseña 1234.
- No utilices plantillas ni plugins nulled. Empiezas a montar tu web y ves un theme que te gusta pero es de pago y decides buscarlo gratis. Puede que te ahorres unos euros pero estás construyendo tu casa online con unos cimientos no del todo seguros.
Esa plantilla o ese plugin que instalas pirata puede traer líneas de código que a la larga te darán dolor de cabeza.
Mantén al día tu instalación de WordPress. Actualiza según vayan saliendo las nuevas versiones de la plantilla, del propio WordPress y lo más importante, de los plugins.
Asegurarse de que la web contiene un malware
Estás bastante seguro de que tu wordpress contiene algún tipo de malware o algún archivo ha sido modificado. Lo intuyes porque al cargar tu url, Google muestra un aviso del tipo:

O porque desde la empresa de hosting dónde alojas tu web te han avisado de que estás consumiendo muchos recursos. O que te han tenido que desactivar temporalmente el servicio porque estás haciendo envío masivo de mails. O porque has descubierto cientos de urls con productos de farmacia en tu web. O porque directamente la estética de tu web ha cambiado completamente. O el peor de los casos, no puedes acceder al panel de administración.
Como puedes ver son varias las posibilidades, por eso vamos a utilizar alguna herramienta para asegurarnos de ello.
Puedes utilizar un antivirus a nivel de servidor, para ello contacta con tu proveedor a ver si disponen de uno instalado y que analicen tu web.
La otra opción de antivirus es online. A través de la herramienta de análisis de Sucuri
Otra herramienta que te recomiendo y que se utiliza bastante, es Virus Total. Con ella puedes no sólo analizar una url, también subir archivos sueltos o comprimidos, por ejemplo todas las carpetas que forman tu web.
A nivel local, otra posibilidad que tenemos, y que yo personalmente utilicé una vez y me dio resultado para encontrar código malicioso, es descargarnos todos los archivos de la web y pasarlo por un antivirus, como puede ser el famoso Avast.
En caso de tener acceso al panel de administración de nuestra web, también podemos utilizar algún plugin de escaneo como es el Anti-Malware Security
Este plugin hará un escáner muy completo de todos tus archivos y te dirá si alguno de ellos es sospechoso de estar infectado.
Primer paso: limpiar los archivos de configuración de WordPress
Ahora ya sí, vamos a ver cómo podemos reparar un WordPress hackeado.
Hay que saber que tenemos dos posibilidades:
- Sacar el hacha e ir directos a cambiar todos los archivos por unos nuevos y limpios.
- Ir en busca del código inyectado y eliminarlo.
La realidad es que la opción de buscar el código es bastante laboriosa y muchas veces será casi imposible dar con él. Por eso nos ponemos en el caso de que vamos a restaurar toda nuestra web por una copia nueva y limpia.
Es probable que ya lo sepas, pero por si acaso te cuento que las carpetas y archivos de WordPress podríamos dividirlas en dos grupos:
- Todo lo necesario para el funcionamiento de WordPress por un lado.
- Todo lo que añade funcionalidades como la plantilla, los plugins y las imágenes que vamos subiendo por otro.
Si nos fijamos en la estructura que deja tras la instalación un WordPress, la carpeta wp-content es la que contiene plantilla, plugins, fotos, vídeos, etc.
Lo primero que vamos a hacer es una copia de seguridad, que aunque esté infectada, siempre es importante hacer copias antes de cualquier cambio. Así como hacer copias de seguridad de toda tu web WordPress de forma periódica.
Para ello nos descargamos:
- carpeta wp-content
- los archivos robots.txt y .htaccess
- y el wp-config.php
Ahora vamos a descargarnos un WordPress nuevo y limpio, pero siempre la misma versión que estuviéramos usando en la web hackeada. Desde el sitio oficial de WordPress podremos buscar y descargar el .zip
Utilizando algún gestor de archivos FTP, o desde la cuenta CPanel de nuestro hosting, debemos eliminar todo el WordPress (excepto lo que hemos copiado antes) es decir borramos wp-admin, wp-includes y todos los archivos sueltos menos el config, robot y htacccess.
Y subimos estos mismos archivos limpios desde la versión de WordPress que habíamos descargado.
Es importante hacer hincapié en que lo mejor es borrar y luego subir los nuevos ficheros, en vez de copiar y que se sustituyan. Así nos aseguramos de que estamos haciendo correctamente limpieza de todo aquel fichero que no debería estar ahí.
Con esto ya tenemos un paso dado, hemos dejado nueva la instalación del WordPress de nuestra web.
Segundo Paso: Limpiar plugins y plantilla
La forma más que probable por el que nos han hackeado WordPress es que haya sido por algún plugin o theme y una vulnerabilidad que este tuviera. O directamente por, como ya he comentado, utilizarlos nulled, es decir descargados gratuitamente de fuentes no fiables.
El paso que ahora vamos a dar es parecido al primero pero mucho más importante.
Debemos descargarnos desde la fuente original la plantilla que estemos utilizando y sustituir los ficheros de la carpeta con el nombre de la plantilla dentro de /wp-content/themes/ por los recién descargados.
Si hiciste algún cambio directamente en estos ficheros y no utilizaste un child theme, perderás dichos cambios.
Si es así habrás aprendido lo importante que es crear y para qué sirven los child theme.
El siguiente paso a dar es repetir lo que hemos hecho hasta ahora pero con las carpetas que contienen los plugins. Tendremos que descargar los plugins limpios desde sus respectivos repositorios e ir sustituyendo.
Es decir, borrar de la ruta /wp-content/plugins/ la carpeta de cada uno de los plugins y copia los nuevos ficheros.
Medidas de refuerzo tras recuperar WordPress hackeado
Cambiar las contraseñas
Una medida importante que debes tomar es cambiar todas las contraseñas que tengan relación con tu web.
- Cambia la contraseña de todos los usuarios con nivel administrador.
- Cambia la contraseña de acceso a tu panel de hosting.
- Aunque no hagas mucho uso del FTP, cambia la contraseña.
- Y por último cambia la contraseña del usuario de la base de datos.
Los dos últimos pasos podrás hacerlos desde Cpanel o desde el panel que te de tu proveedor de hosting en su caso:
- Si utilizas Cpanel tendrás que ir a la sección Base de Datos->Bases de Datos MySQL->Usuarios Actuales->Cambiar contraseña.
- Una vez la hayas cambiado es importante que la actualices en el wp-config.php porque si no la web no funcionará al no conectar con la base de datos.
Abres el fichero y en esta línea, cambia la contraseña:
/** Tu contraseña de MySQL */ define('DB_PASSWORD', 'contraseñavieja');
Y aprovecha para revisar este fichero buscando alguna línea o texto que sea sospechoso. También puede darse el caso de que hayan llegado a modificarlo.
Cambiar las claves de autentificación de WordPress
Como este no es un post sobre qué son dichas claves, vamos a dejarlo en que son importantes y pocos usuarios de WordPress hacen uso de ellas.
En el mismo fichero de antes, el wp-config.php podrás ver estas líneas:
define('AUTH_KEY', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria. define('SECURE_AUTH_KEY', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria. define('LOGGED_IN_KEY', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria. define('NONCE_KEY', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria. define('AUTH_SALT', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria. define('SECURE_AUTH_SALT', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria. define('LOGGED_IN_SALT', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria. define('NONCE_SALT', 'pon aquí tu frase aleatoria'); // Cambia esto por tu frase aleatoria.
Esto en caso de que no las pusieras en su momento, porque si las añadiste, dónde pone ‘pon aquí tu frase aleatoria’ tendrás una ristra de números, letras y símbolos.
Pues bien, estas son las que vamos a cambiar o añadir de nuevas. Para ello vamos a https://api.wordpress.org/secret-key/1.1/salt/
Nos saldrá lo mismo que antes pero con las claves generadas. Sólo basta con copiar y sustituir, y lógicamente guardar los cambios.
Utilizar plugins de seguridad
Como ya has sufrido en tus propias carnes, la seguridad en WordPress a pesar de ser bastante buena, no es infalible. Por eso es importante que te tomes tiempo para aplicar varios puntos de refuerzo en seguridad. Echa un ojo a este artículo donde Juanma te daba algunos consejos de seguridad en WordPress.
Como punto principal puedes instalar el plugin Wordfence. Es uno de los más utilizados y bastante fiable siendo a la vez antivirus, firewall e incluso detecciones en tiempo real.
Cambiar de proveedor de hosting
A lo mejor tras todo este periplo de desinfección de tu WordPress ha llegado el momento de plantearte cambiar de hosting.
No es cierto que la infección de tu web haya llegado por culpa de la seguridad en el hosting, ni mucho menos. Pero todo suma y un buen servidor con medidas de seguridad bien planteadas, es importante.
Decirle a Google que ya estamos limpios
Si tu web fue hackeada y mostraba el aviso que vimos al principio, es porque Google lo tenía detectado y te había puesto el “cartel de infectado”.
Esto se puede ver si accedes a Search Console, desde el menú Problemas de Seguridad.
Una vez has limpiado todo rastro de malware podremos pedir a Google que reconsidere la web haciendo uso de la herramienta Solicitar una Revisión que verás en el mismo menú anterior junto al aviso de que tu web contiene software malicioso.
Deberás describir un pequeño informe de las medidas que has tomado y cómo has puesto solución al hackeo y enviarlo. Esperar que revisen tu web y serás informado vía mail del resultado.
Si todo se ha hecho bien no debería haber problema para que Google te quite las advertencias.
Conclusiones
Como habrás podido ver, recuperar una web en WordPress que ha sido vulnerada e infectada con algún código malicioso, no es del todo complicado.
Tendrás que tener paciencia e ir realizando con cuidado todos los pasos explicados, hasta llegar a tener nuevamente tu web limpia y operativa.
Sí es cierto que la infección puede haber llegado un paso más lejos y tener la base de datos código inyectado. En este caso la recuperación es más complicada porque habría que buscar ciertos patrones que se utilizan como código malicioso, entre todas las tablas.
Y también es cierto que a veces con éstos pasos puede que no se llegue a una limpieza completa y habría que sacar más artillería y una lupa de mayor profundidad para buscar dónde está el problema.
Pero en general, los hackeos habituales en WordPress suelen solucionarse con estas pautas de limpieza.
No quiero terminar sin volver a comentar la importancia de tomar precauciones desde el principio con medidas de seguridad, a través de plugins, buen servidor y de sentido común con las contraseñas. Y tapoco estaría de más si decidieras contratar un servicio de mantenimiento para WordPress por profesionales.
Ahora te toca a ti. ¿Has tenido alguna vez un WordPress hackeado? ¿Cómo llegaste a solucionarlo?