Saltar al contenido

Limpiar un WordPress infectado y recuperar posicionamiento

16 noviembre, 2018
quitar penalizaciones de gogle

Empecemos desde el principio. Hace unos meses me dio fiebre. Bueno, me tiraré a la cama.

Antes de hacerlo, echo un vistazo a los diferentes sitios monitoreados, y uno en particular, después de la actualización del escaneo de SEOZoom me muestra una mala caída tanto en las consultas monitoreadas como en algunas en general.

Sobre la marcha, entre los humos de la fiebre, creo que la caída se debe al hecho de que ha sido demasiado largo que el sitio no está actualizado en contenido y no recibe suficientes enlaces entrantes.

Podría ser, el sitio en cuestión de una asociación de profesionales locales es estable durante meses para las consultas relacionadas con sus actividades (primera página), pero por desgracia es uno de los que el consultor de SEO (es decir, I) no tiene plena autonomía en la aplicación de los contenidos (es decir, después de la planificación a continuación, hacerlos por una copia), pero los clientes han emitido un dictado como: que nos proporcionan el plan editorial y el calendario para cada artículo y escribimos. Que preparo a principios de año para los próximos meses, pero en este caso ha pasado mucho tiempo desde que se atascó y desde noviembre de 2017 no han enviado nada más. Así que sólo puedo hacer ajustes finos y actividades de monitoreo pasivo.

Pero el cliente está de acuerdo con ello y por lo tanto no es mi martillo (también porque ya lo he hecho varias veces hasta que me oigo decir: «Vale, lo entendemos, pero tenemos mucho más que hacer, somos conscientes de que has cumplido con tu deber«). Paga lo mismo y de lo que dice que está contento con lo que produce el sitio (adquisición de clientes potenciales).

A nivel de enlaces he agotado el presupuesto asignado para conseguir nuevos enlaces (presupuesto entre otras cosas muy bajo en comparación con el mínimo que debe hacerse) y por esta razón aquí queda un excelente dominio a merced de los vientos del SEO, rogando que ningún competidor haga algo mejor para socavarlo desde las posiciones adquiridas con el tiempo.

Pero volvamos al problema. El sitio ha caído mucho y no puedo hacer más análisis, no tengo las facultades debido a la fiebre y luego me arrojo a la cama en los brazos de Morfeo, que me hace pasar una noche cálida y húmeda, empapada de sudor febril.

Negativo #SEO: limpia un #wordpress infectado por url de spam y recupera la ubicación perdida Comparte el TweetEn

la mañana me despierto que estoy un poco mejor, y mientras tengo fiebre trato de razonar sobre esta caída.

Frente a un monitor qué no qué, la caída de posicionamiento es demasiado alta para ser atribuible a una bajada natural del SERP por las consultas realizadas y consciente de experiencias previas busco causas en una de las tres áreas:

  • el sitio tiene problemas técnicos
  • Google ha lanzado un nuevo algoritmo
  • el dominio ha obtenido una acción manual

Y luego recojo los datos.

Ok, algunas consultas han caído (en gran medida y sólo para alguna url), pero el tráfico en realidad? Miro a Analytics y hasta el jueves por la mañana, antes de la caída destacada por SEOZoom, todo está bien (entonces a partir del viernes me daré cuenta de que por la noche cayó ligeramente en comparación con la semana anterior). Todo se complica por el hecho de que el sitio tiene pocos accesos por parte del personal, por lo que no destaca la disminución de las visitas.

Analizando en detalle me doy cuenta de que caer de posicionamiento es el home y algunas URLs.

No hay actualizaciones algorítmicas, la Consola de Búsqueda no tiene acciones manuales, el contenido no se cambia desde hace algún tiempo (no hay Panda granular), no he comprado enlaces y no hay nuevos (no hay Penguin granular), así que hay problemas técnicos.

Empecemos a buscar en el sitio.

Consciente del hecho de que algunos sitios WP de mi PBN (broma no tengo PBN, son malvados eh! no lo hagas!) la semana pasada fueron pinchados pruebo sobre la marcha un

sitio de

comando

: https/// nombre de dominio.

tld

 

AH!

Ok, no es la pobre actualización de contenido, tengo un agujero en el paquete de trabajo, pero ¿cómo demonios lo han hecho desde que actualicé este (tema y plugin) hace menos de un mes y que no hay nuevas actualizaciones?

La web está en un servidor compartido con otro WP fantasma, proyecto nunca iniciado y aparentemente abandonado durante mucho tiempo, con un WP decididamente obsoleto que responde a un dominio no utilizado!

Así que perforaron el WP fantasma y de allí subieron a la raíz, vieron lo que había allí y bajaron para perforar este dominio. Maldito sea el ingeniero de sistemas.

rm -rf /dominio.es

Ahora, en teoría, ya no pueden entrar, pero ahora es el momento de analizar el sitio de la lavandería y entender lo que pasó.

A través del sitio de comandos descubro dos cosas:

  • el título/descripción de algunas urls existentes se modifican en japonés y con texto espumoso
  • google indexó un matadero de resultados de spam, con url, título y descripción cinematográfica japonesa (japonés/chino y spammosi)

Así que revisaré la base de datos ahora mismo, que está limpia. Esas son buenas noticias.

¿Y bien?

¿Cómo es el mapa del sitio?

El generado por yoast está bien, pero… ¿cómo es la historia de que incluso en el archivo robots.txt apuntas a otro sitemap que el generado por yoast?

¿Por qué me dicen desde la consola de búsqueda que hay errores en el mapa del sitio? (mapa del sitio en html y por lo tanto no procesable)

Ok entonces el ataque fue traído de esta manera: la simple generación de una matanza de páginas de spam, la sustitución del mapa del sitio y la notificación a Google mediante la redirección desde el original.

¿Pero cómo se llevó a cabo este ataque?

Analizo los archivos dentro del host y descubro que el htaccess ha sido infectado, añadiendo una regla para hacer una redirección al sitemap de spammosa del sitio (generado dinámicamente según un algoritmo encriptado) y además el archivo robots.txt ha sido modificado y ahora enlaza el nuevo sitemap de spam y….

¡Ta da! Incluso en este dominio hay dos malditas puertas traseras! De los que se pueden utilizar como gestores de archivos, para eliminar, cargar y modificar permisos en los archivos, claramente para todo el host, lo que si se divide en múltiples dominios los hace a todos vulnerables a este tipo de acción. En resumen, las webshells en php, entendemos, las que también se pueden hacer de forma independiente utilizando la función exec().

Así que analizo los registros del servidor web, ahora que conozco los nombres de los archivos.php usados como puertas traseras, y voy a descubrir que exactamente el jueves 31, en las primeras horas de la mañana, alguien a través de un proxy chino ha hecho acceso a esos archivos y claramente habrá subido esos scripts.

Por lo tanto, es necesario limpiar el sitio y para ello no optar por utilizar un plugin (porque a menudo no se puede limpiar y a veces incluso detectar agujeros de seguridad), pero proceder con un método mucho más drástico y seguro.

Cómo limpiar una WordPress infectada

Atención, el procedimiento a seguir es definitivamente completo y rápido, pero sólo si usted sabe dónde poner sus manos.

Es evidente que proporciona que usted tiene una versión de copia de seguridad de su sitio, pero después de todo lo que todos ustedes tienen no?

  • copia de seguridad del db del sitio en línea que nunca se sabe
  • copia de seguridad de los archivos del sitio en línea que nunca se sabe
  • análisis de la carpeta de medios en busca de archivos sospechosos y/o archivos cargados en el momento del ataque
  • borrar todo excepto los medios de WordPress
  • modificar los parámetros de acceso a la base de datos (los escritos en wp-config.php sólo para estar claros)
  • modificar el fichero wp-config.php con los nuevos accesos al db
  • subir una versión limpia y actualizada de wordpress
  • cargar el tema actualizado a la última versión (tomado de una copia de seguridad local del sitio)
  • recargar plugins
  • cambiar las contraseñas de acceso de los usuarios de WP
  • regenerar permalink
  • regenerar el mapa del sitio
  • comprobar que todo está en su sitio (navegación rápida del sitio y paso de Screaming Frog/Visual SEO Studio en busca de errores)
  • compruebe que todos los resultados de spam caen en una página 404 correcta (con estado http 404). Esto es realmente suficiente, pero si realmente quieres hacer las cosas bien en realidad el código de estado http debe ser 410 o el recurso ya no existe y que NO lo será en el futuro.

Como habrás entendido todo esto supone que el dominio se desconecta por un tiempo variable, dependiendo de tu conexión (tiempo de carga de archivos vía ftp).

Puede evitar todo esto, o más bien reducir los tiempos de desconexión, con cierta precaución:

  • precargue los archivos en un directorio temporal y luego mueva todo vía terminal (comando mv desde el shell de linux)
  • borrar archivos del terminal (comando rm)
  • poner una pantalla de inicio del trabajo en curso

Con una conexión a Fibra, sin embargo, la recarga de un WordPress es una cuestión de menos de media hora siempre y cuando no elimines los medios, que el tema en uso no sea una basura con mil archivos (y que por lo tanto tengas otros problemas de SEO a pesar de todo) y que no tengas en uso una avalancha de plugins (y que quizás debas podar).

Después de limpiar el sitio en WordPress, lado SEO

Después de limpiar WordPress, necesita hacer dos cosas:

  • comunicar a Google que los contenidos del sitio han sido actualizados
  • (en teoría) limpiar todos los resultados de spam indexado

Comunicar que las URLs del sitio ya no son spam para Google

Muy fácil, sólo tiene que enviar el mapa del sitio a la Consola de Búsqueda, para indicar al motor de búsqueda que realice un nuevo análisis del dominio (desde el antiguo GSC: selección de la propiedad deseada > Análisis > Mapa del sitio > Añadir/cabecera del mapa del sitio).

A continuación, analice los registros del servidor para ver el pase de la araña. Si no puedes hacerlo, ¡trata de convertirte en uno! Aparte de las bromas, sepa que seolyzer.io ayuda mucho a empezar.

Limpiar el motor de búsqueda de resultados infectados/spam relacionado con nuestro dominio

En teoría, ahora es necesario limpiar los resultados de spam en SERP y explicaré algunos de los métodos a continuación.

¡Atención! Como se descubrió que eran SPAM, con cosas como Cialis, Viagra y Louis Vuitton, las URLs de spam que ya no existen no deberían ser redirigidas a las páginas del sitio o a la página principal, sino al 404.

Sin embargo, puedo decirles de inmediato que esta acción es ahora mucho menos útil que en el pasado. Google se ha vuelto mucho más inteligente.

Si, por lo tanto, tienes curiosidad por descubrir mis experimentos sobre este aspecto, sigue leyendo, de lo contrario salta este párrafo y vete a seguir donde te digo mis consideraciones sobre este aspecto.

Extraer las URLs a eliminar

Antes de poder indicar a Google qué URL debe eliminar, debe disponer de una lista de las mismas.

Para hacer esto la mejor y más rápida manera es rastrear el sitio comprometido, con una herramienta como Screaming Frog/Visual SEO studio, excluyendo entonces las URLs útiles o en mi caso directamente el mapa del sitio de spam.

Desafortunadamente, sin embargo, debido a la fiebre, no lo hice antes de limpiar y para ello tuve que reconstruir la lista de URLs de spam raspando el SERP de Google devuelto por el sitio de comandos.

Hay una cosa sin embargo: el comando del sitio no devuelve todos los resultados y en mi caso de más de 5000 spamsnippet (porque detuve la infección a tiempo, en otros casos me encontré con 70000 url de spam) saca un máximo de 10 para unas 40 páginas, o 400.

Descarta el SERP de Google para una consulta u operador de búsqueda determinado.

Esta operación debe ser claramente automatizada, incluso con sólo pegar a mano 400 resultados se tarda demasiado tiempo y si se repite con el tiempo….

Para proceder los métodos son diferentes y por ejemplo se puede:

Te lo estoy diciendo ahora mismo:

  • la construcción del script lleva más tiempo que el uso de una extensión de Chrome
  • el uso de software de automatización, si no conoce la herramienta, le quita una avalancha de tiempo para tomar posesión del lenguaje de código privativo (pero eso es una excelente inversión para reutilizarlo para automatizar funciones cursivas si lo hace periódicamente)

Así que usé mi propia extensión para Chrome Data Miner.

Después de instalarlo abrí una nueva ventana del navegador y ejecuté el comando site://domain.

Cuidando de permanecer en la primera página de la paginación, he configurado la herramienta para que raspee todos los resultados de las «páginas paginadas«.

Para ello presioné el botón Página siguiente y establecí el valor en Raspar X páginas antes de parar a 100, luego presioné el botón Iniciar paginación.

La herramienta entonces extrajo todos los resultados (verás que funciona porque navega lentamente por todas las páginas de la página) y luego bajé un csv, luego lo transformé en un archivo txt.

A continuación, utilicé la función de la Consola de búsqueda de Google Index > Eliminación de URL que, sin embargo, sólo acepta de forma nativa una URL a la vez.

Es por eso que invertí una gran cantidad (como un euro y algo así) para comprar una extensión para Chrome, Webmaster Tools – Bulk URL Remover que añade la capacidad de alimentar la herramienta con una lista de urls dentro de un archivo.

El archivo debe generarse como un simple archivo de texto y cada url que desee eliminar debe estar envuelto.

Así que alimenté un txt con todos los gritos para eliminar, haciendo una prueba primero.

Desafortunadamente, sin embargo, la consola de búsqueda en algunos casos y después de alrededor de 50 url dado en la comida con este método se planta y proporciona un mensaje de error agradable (Usted ha excedido su límite de cuota!). En ese caso, debes volver a cargar la página reabriendo la consola de búsqueda, la propiedad en la que deseas trabajar y volver a Google Index > Eliminar URL. El software reinicia el trabajo desde donde fue interrumpido.

Y aquí descubrí una cosita. Es decir, la herramienta de eliminación de URLs acepta un máximo de 1000 url/día y luego se bloquea.

El tiempo para realizar esta operación se alarga mucho, y por esta razón no está bien, especialmente cuando (como en este caso) no hay presupuesto.

Así que, después de analizar el posicionamiento y darme cuenta de que las posiciones anteriores habían sido recuperadas, dejé todo el trabajo de limpieza y descubrí algo nuevo.

Porque no necesita limpiar el contenido indexado de un sitio de Bucato

Google se ha vuelto definitivamente más inteligente y un posible trabajo de limpieza de los resultados de spam puede ser evitado!

Digo eso porque:

  • El dominio después de unos 20 días ha recuperado las posiciones perdidas anteriores.
  • Los resultados de spam no trajeron ningún tráfico, ya que no se posicionaron (por las mismas razones que el contenido fuera de tema y en un diseño totalmente diferente del resto del sitio no se posicionan).
  • Google, sin embargo, indexó los resultados y los reorganizó, entendiendo (gracias a la respuesta 404) que ya no existían y los reportó lentamente en la Consola de Búsqueda, donde con dos clics se puede marcar como correctos.
  • Todos los competidores que lleven a cabo un análisis de dominio se sentirán consternados

Error 404 VS 410

El error 404 es el más común y cuando se libera este código de estado le explicamos al spider o usuario que para AHORA el recurso no está disponible pero que puede estarlo en el futuro.

En este caso, por lo tanto, sería mejor para las urls de spam que ya no existen, liberar 410 como el estado de error (contenido que ya no existe y que ya no existirá).

Para ello, sin embargo, tendría que hacer una regex e intervenir en el acceso que en este caso me pareció un claro derroche de energía no remunerada, ¡pero lo recuerdan para el futuro!

Después de limpiar WordPress de los resultados infectados en los días siguientes he monitoreado el progreso del sitio gracias a:

  • SEOZoom: que me informó de cómo se habían recuperado las posiciones de las consultas monitorizadas (la herramienta permite entender en primer lugar la tendencia del dominio, ya que si un resultado se posiciona o no para una consulta determinada traerá más o menos tráfico en el futuro).
  • Google Analytics: quien me habló de una ligera caída (que podría ser mucho mayor si el problema no se resolviera a tiempo)
  • Consola de Búsqueda: que después de los clásicos tres días de tiempo diferido empecé a mostrar impresiones sobre la nueva url de spam.
  • Consola de búsqueda: que (siempre después de los tres días) me mostró una caída decidida de impresión/clic en una de las urls para las que había perdido la posición.

Globalmente, sin embargo, para este caso, sigue siendo una herramienta como SEOZoom la más rápida para detectar un problema de tipo, ya que la caída fue tan corta que una herramienta como Search Console (que muestra los datos tres días antes) no puede monitorizar y Analytics en el mar de URLs que los monitores pueden no mostrar una caída de accesos al sitio tan significativa que se descubrirá hasta después de unos días.

De hecho les digo más, dada la velocidad con la que resolví la cosa no he recibido ninguna notificación de sitio comprometido en la Consola de Búsqueda de Google, pero sólo para aumentar las 404 páginas del sitio después de los trabajos de limpieza.

Y aquí concluyo, claramente en los comentarios a seguir si tienes dudas, perplejidades y curiosidad no dudes en preguntar.

Mi principal consejo para resolver este problema es… ¡no enfermarme! Si miro hacia atrás en mis pasos me doy cuenta de que hice mil sombreros en esos días de fiebre, incluyendo el seguimiento de las acciones realizadas en pedazos y no completamente (es por eso que es un poco confuso este artículo, de alguna manera me fui de memoria basado en lo que había marcado hace meses).

¿Os a quedado claro como quitar penalizaciones de google?, siguenos en nuestro blog seo.

Llámanos