secaudit.eu
Incidentes

Spam SEO en WordPress: enlaces ocultos de casino y farmacia

Spam SEO en WordPress: localice enlaces ocultos de casino y farmacia, vea lo que ve Googlebot, limpie la base de datos y los archivos y solicite la revisión a Google.

Por , AngelForce OÜ 9 min de lectura

También en: English Deutsch Français Italiano Polski Português Türkçe

Si Google muestra resultados inesperados de casino, farmacia o en japonés para su dominio, pero su sitio se ve normal en su navegador, investigue si se trata de spam SEO en WordPress. Los resultados pueden deberse a un compromiso activo o a spam que sigue indexado después de una limpieza. El spam está escondido en el marcado o se sirve solo a Google y a los visitantes que llegan desde el buscador. Esta guía explica cómo ver su sitio como lo ve Google, dónde se almacena el spam y cómo sacarlo del índice de Google.

Qué aspecto tiene el spam SEO en WordPress y por qué usted no lo ve

No lo ve porque no está pensado para usted. Los atacantes quieren la reputación de su dominio, no la atención de sus visitantes. El código inyectado suele saltarse a los usuarios con sesión iniciada y a quienes escriben su dirección directamente en el navegador.

Hay tres formas habituales:

  • Hacklinks. Se inyectan en sus páginas enlaces a sitios de casino, farmacia o préstamos. Normalmente están dentro de un bloque con display:none, colocados fuera de la pantalla o en un pie de página que nadie lee.
  • El hackeo de palabras clave japonesas (Japanese keyword hack). Miles de páginas generadas automáticamente, con texto en japonés y enlaces a tiendas. A menudo llevan su propio sitemap para que Google las encuentre enseguida.
  • Redirecciones condicionales y cloaking. El código comprueba el user agent (agente de usuario), la dirección IP o el referente (referrer). Googlebot recibe contenido spam. El visitante que llega desde Google es redirigido. Usted ve la página normal.
Diagrama: el código inyectado muestra una página normal al propietario, enseña enlaces spam a Googlebot y redirige a un casino a los visitantes que llegan desde el buscador
Cloaking: la misma URL devuelve contenido distinto según quién la pida

El daño es real aunque no lo vea. Pueden caer las posiciones, los visitantes pierden confianza y Google puede gastar su esfuerzo de rastreo en páginas de spam en lugar de en las suyas. Si aún no está seguro de haber sido atacado, empiece por nuestras 12 señales de que su sitio WordPress ha sido hackeado.

Vea su sitio como lo ve Google

Empiece por el propio Google. Busque site:example.com, recorra los resultados y luego afine:

site:example.com casino
site:example.com viagra OR cialis
site:example.com 激安
site:example.com inurl:.html

Resultados en un idioma en el que usted no publica, o patrones de URL que su sitio no usa, son un indicio claro.

Otra comprobación útil es la Inspección de URLs de Google Search Console. Pegue una URL sospechosa (o su página de inicio), pulse Probar URL publicada (Test live URL) y después Ver página probada (View tested page). La pestaña HTML muestra el marcado renderizado que recibió el rastreador de Google, y la captura muestra lo que renderizó. Busque en ese HTML casino, href o display:none. La prueba en vivo usa el rastreador de inspección de Google, que los atacantes pueden tratar de forma distinta al rastreador de indexación. Puede revelar cloaking, pero un resultado limpio no lo descarta.

Puede hacer una comparación aproximada desde su propio equipo con curl:

curl -s https://example.com/ -o normal.html
curl -s -A "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" https://example.com/ -o googlebot.html
diff normal.html googlebot.html
curl -sS -D - -o /dev/null -e "https://www.google.com/" https://example.com/

El último comando hace una petición GET con un referente de Google e imprime las cabeceras de respuesta. Una cabecera Location: puede delatar una redirección HTTP, pero no detecta redirecciones por JavaScript ni reproduce todas las sesiones de navegador. Hay otra limitación: si el código inyectado comprueba los rangos de IP de Google, curl desde su portátil verá una página limpia. Un resultado limpio con curl no significa que el sitio esté limpio.

Por último, abra Indexación > Páginas en Search Console. Un salto repentino en las URL indexadas o detectadas que usted no ha publicado suele indicar páginas de spam generadas.

Dónde se esconde el spam SEO en WordPress

Conserve una copia de seguridad de archivos y base de datos antes de investigar. Proteja esa copia, porque puede contener datos personales y secretos. Es preferible trabajar con una copia aislada y con acceso de red restringido, y ejecutar los comandos siguientes desde su raíz de WordPress: muchos comandos de WP-CLI cargan WordPress y pueden ejecutar código comprometido. Añadir --skip-plugins --skip-themes reduce ese riesgo, pero los mu-plugins y un wp-config.php modificado se ejecutan igualmente. Si no puede aislarla con seguridad, pida a su proveedor de alojamiento o a un equipo de respuesta a incidentes que lo investigue.

En la base de datos

wp db search 'casino' --all-tables
wp db search 'viagra' --all-tables
wp post list --post_type=any --post_status=any --orderby=date --order=DESC --fields=ID,post_type,post_status,post_date,post_title
wp option list --search='widget_*'
wp option list --search='theme_mods_*'
wp user list --role=administrator --fields=ID,user_login,user_email,user_registered

Revise las entradas y los metadatos de entradas en busca de enlaces que usted no ha escrito, y fíjese en entradas o páginas recientes con títulos o estados extraños. En wp_options, mire:

  • los widgets de texto y HTML
  • los theme mods, donde suele alojarse el código personalizado del pie de página
  • las opciones con carga automática (autoload) cuyo nombre no reconozca

Los nombres de tabla con wp_ de arriba presuponen el prefijo por defecto; si el suyo es otro, compruebe $table_prefix en wp-config.php. Un administrador desconocido es, por sí solo, un hallazgo grave.

En los archivos

wp core verify-checksums
wp plugin verify-checksums --all
ls -la wp-content/mu-plugins
find wp-content/uploads -type f \( -name "*.php" -o -name "*.phtml" -o -name "*.phar" \)
find . -type f -name "*.php" -mtime -14
grep -rnE "base64_decode|gzinflate|str_rot13|eval\(" wp-content --include=*.php

wp core verify-checksums compara los archivos del núcleo con los de WordPress.org. wp plugin verify-checksums --all solo funciona con plugins alojados en WordPress.org. Para los plugins premium, obtenga una copia nueva del fabricante y compare con ella.

El grep de marcadores de ofuscación producirá falsos positivos, porque algunos plugins legítimos también usan estas funciones. Busque cadenas codificadas muy largas y código que no tenga sentido en su contexto.

Revise además a mano estos lugares:

  • functions.php, header.php y footer.php del tema
  • carpetas de plugins que usted no ha instalado (los atacantes prefieren nombres creíbles)
  • wp-config.php e index.php, por si hay líneas include adicionales
  • .htaccess, por si contiene reglas RewriteCond sobre HTTP_USER_AGENT o HTTP_REFERER
  • la raíz web, por si hay archivos XML de sitemap o archivos de verificación google*.html que usted no creó
Forma de spamLugares habituales donde se esconde
HacklinksPie del tema, widgets, theme mods, contenido de entradas
Hackeo de palabras clave japonesasArchivos generados, sitemap falso, plugin falso, .htaccess
Cloaking y redireccionesfunctions.php, mu-plugins, .htaccess, index.php

Busque en Search Console las huellas del atacante

Los atacantes suelen verificarse como propietarios de su propiedad en Search Console. Después envían sus propios sitemaps para que Google indexe el spam más rápido. Mientras conserven ese acceso, pueden seguir empujando URL.

Abra Configuración > Usuarios y permisos y elimine a cualquier propietario o usuario que no conozca. Luego elimine también su método de verificación. Puede ser un archivo google*.html en la raíz web, una metaetiqueta en el tema o en los ajustes de cabecera, o un registro DNS TXT. Si se salta este paso, pueden volver a verificarse sin más.

En Indexación > Sitemaps, investigue los envíos que no reconozca: puede que los hayan enviado plugins legítimos u otros administradores autorizados del sitio. Quite de Search Console los sitemaps enviados por el atacante y elimine o desactive su origen en el sitio. Después abra Seguridad y acciones manuales (Security & Manual Actions) y lea tanto el informe de Problemas de seguridad como el de Acciones manuales. Las URL de ejemplo que figuran ahí le indican qué spam ha encontrado Google, lo que sirve de lista de comprobación para la limpieza.

Limpie el spam y cierre después la vía de entrada

Borrar los enlaces visibles es solo maquillaje. Si el punto de entrada sigue abierto, el spam suele volver, a menudo en pocos días.

  1. Si aún no lo ha hecho, haga una copia del estado infectado (archivos y base de datos) y consérvela como prueba.
  2. Elimine de la base de datos las entradas, opciones, widgets y usuarios de spam.
  3. Sustituya los archivos modificados del núcleo, de los plugins y del tema por copias nuevas de fuentes fiables. No edite los archivos infectados línea a línea.
  4. Encuentre el punto de entrada. Los más comunes son un plugin vulnerable o pirata (nulled), una contraseña de administrador robada o credenciales de FTP o de alojamiento filtradas.
  5. Corríjalo y después cambie todas las contraseñas y las claves (salts) de wp-config.php.

Nuestro plan para eliminar malware en WordPress explica el procedimiento completo. Plugins vulnerables de WordPress trata la vía de entrada más frecuente.

La misma brecha puede haber expuesto también datos de clientes, como envíos de formularios o cuentas de usuario. En ese caso pueden aplicarse las obligaciones del RGPD en caso de violación de la seguridad de los datos; vea la notificación de brechas del RGPD en 72 horas.

Saque el spam de Google: errores 410, retiradas y solicitud de revisión

Una vez eliminadas las páginas generadas que solo contenían spam, sus URL deben devolver 404 (No encontrado) o 410 (Desaparecido); ambos valen. Si se modificaron páginas legítimas, restáurelas en lugar de eliminar sus URL. No redirija las URL de spam a su página de inicio: Google puede tratarlo como un soft 404 y seguir rastreándolas.

Si las URL de spam comparten un patrón que no usa ninguna de sus páginas reales, puede responder con 410 a nivel de servidor:

RedirectMatch 410 "^/spam-pattern/"
location ~ ^/spam-pattern/ { return 410; }

En casos urgentes, como spam que aparece con el nombre de su marca, use la herramienta Retiradas (Removals) de Search Console. Solo oculta URL de los resultados de forma temporal y no es un método de eliminación permanente. Mantenga las URL de solo spam devolviendo 404/410 y deje que Google rastree esas respuestas; no las bloquee en robots.txt, porque Google necesita ver el estado de retirada. Consulte la guía de Google sobre la herramienta de retiradas. Vuelva a enviar su sitemap legítimo para que Google rastree de nuevo las páginas que importan.

Si necesita una revisión depende de los informes:

  • Si el informe de Problemas de seguridad o el de Acciones manuales muestra un problema sin resolver, use su opción de revisión después de corregir todas las páginas afectadas. Redacte la solicitud de forma breve y objetiva: qué encontró, qué eliminó, cómo entró el atacante y qué cambió para cerrar esa brecha.
  • Si ninguno de los dos informes muestra problemas, no hay revisión que solicitar. Google debe volver a rastrear el sitio ya limpio.

Mantenga expectativas realistas. Las revisiones tardan, las URL de spam desaparecen poco a poco y las posiciones pueden recuperarse lentamente o no del todo. Nadie puede prometer un plazo.

Detecte la próxima inyección a tiempo

El spam SEO está diseñado para pasar desapercibido, así que necesita comprobaciones que no dependan de mirar la página:

  • Mantenga una referencia de integridad de archivos e investigue cualquier cambio que usted no haya hecho.
  • Haga una búsqueda site: de su dominio una vez al mes.
  • Active las notificaciones por correo en Search Console para que le lleguen los problemas de seguridad y las acciones manuales.
  • Analice la base de datos con regularidad en busca de patrones de enlaces como los anteriores.
  • Trate como un incidente cada cuenta de administrador nueva que usted no haya creado.

El plugin Security Audit & Compliance de secaudit.eu detecta spam SEO oculto y hacklinks, spam en la base de datos, administradores ocultos y otros indicios de compromiso. También compara los archivos con una referencia. Detecta e informa. No limpia su sitio automáticamente, y el punto de entrada sigue necesitando que una persona lo corrija. → secaudit.eu

FAQ

¿Por qué no veo el spam cuando visito mi propio sitio?

El código inyectado decide quién ve qué. Normalmente excluye a los usuarios con sesión iniciada y comprueba el user agent, la dirección IP y el referente. Algunos ataques se dirigen a Googlebot o a visitantes que llegan desde el buscador; otros muestran también spam a visitantes normales u ocultan enlaces en un marcado que se sirve a todos. Use la prueba en vivo de la Inspección de URLs como una comprobación más, pero recuerde que los atacantes pueden servir a su rastreador de inspección un contenido distinto del que sirven al rastreador de indexación.

¿Penalizará Google mi sitio para siempre?

No hay garantías en ningún sentido. Limpie a fondo, cierre el punto de entrada y retire el acceso del atacante en Search Console. Solicite una revisión si un informe de Problemas de seguridad o de Acciones manuales lo exige. La recuperación depende después de que Google vuelva a rastrear su sitio, y eso lleva tiempo.

¿Basta un plugin de seguridad para eliminar el spam SEO?

Un plugin puede ayudarle a encontrar el spam y los archivos modificados. Eliminar el spam de forma limpia y averiguar cómo entró el atacante exige trabajo manual o ayuda profesional. De lo contrario, el spam tiende a volver.

Compruebe su propio sitio

Security Audit & Compliance es el plugin de WordPress de secaudit.eu: busca malware, spam oculto, archivos del núcleo modificados y código vulnerable, y relaciona sus hallazgos con el art. 32 del RGPD, el art. 21 de NIS2 y el OWASP Top 10.

Ver qué comprueba el plugin
Melike Görel

Melike Görel escribe las guías de secaudit.eu sobre seguridad de WordPress y cumplimiento normativo europeo para AngelForce OÜ, la empresa de software de Tallin que está detrás de secaudit.eu.

Elaborado con ayuda de IA y verificado antes de su publicación. Este artículo es información general, no asesoramiento jurídico.