Supervisión y respuesta

Cómo saber si mi sitio WordPress está hackeado: 8 infecciones que rastrear

Detectar si un sitio WordPress está hackeado: 8 infecciones que rastrear

Para saber si tu sitio WordPress ha sido hackeado no basta con abrirlo en el navegador: la mayoría de las infecciones se esconden del administrador conectado. Hay que buscarlas donde viven: en el índice de Google, en ciertos archivos, en la base de datos y en las tareas programadas. Esta guía repasa las ocho infecciones más habituales y, para cada una, el síntoma, el comando o la herramienta que la confirma y los falsos positivos que conviene conocer.

Si primero quieres un triaje rápido de las señales de alerta, empieza por las señales de un sitio WordPress hackeado y vuelve aquí para confirmar infección por infección.

Por qué un hackeo pasa desapercibido

Al atacante le interesa ser discreto: un sitio que funciona con normalidad para su propietario sigue sirviendo a sus fines durante meses. Por eso el código malicioso mira quién hace la petición. Un administrador conectado ve la página normal, un visitante móvil que llega desde Google es redirigido y el robot de Google recibe páginas de spam. En abril de 2026, la puerta trasera oculta en más de 30 plugins comprados (la suite EssentialPlugin) solo mostraba su spam a Googlebot, lo que la hacía invisible para los propietarios de los sitios.

El encubrimiento: una misma dirección, tres respuestasUn sitio infectado responde de forma distinta según el visitante: el administrador conectado ve la página normal, un visitante móvil que llega desde Google es redirigido a un sitio fraudulento y el robot de Google recibe páginas de spam.tudominio.es/El mismo sitio infectadoTú, conectadoNavegador habitualcookie de adminPágina normalNada raroen pantallaMóvil desde GoogleSmartphone, enlaceen los resultadosRedirecciónA un casino ouna tienda falsaGooglebotRobot de rastreode GooglePáginas de spamPalabras japonesas,farmacia, enlacesEl encubrimiento: una misma dirección, tres respuestasUn sitio infectado responde de forma distinta según el visitante: el administrador conectado ve la página normal, un visitante móvil que llega desde Google es redirigido a un sitio fraudulento y el robot de Google recibe páginas de spam.tudominio.es/El mismo sitio infectadoTú, conectadoNavegador habitualcookie de adminPágina normalNada raroen pantallaMóvil desde GoogleSmartphone, enlaceen los resultadosRedirecciónA un casino ouna tienda falsaGooglebotRobot de rastreode GooglePáginas de spamPalabras japonesas,farmacia, enlaces
El código malicioso elige su respuesta según el visitante: por eso el administrador no ve nada.

Consecuencia práctica: prueba siempre desde un punto de vista distinto del tuyo (ventana privada, red móvil, herramienta de inspección de URLs de Google, línea de comandos) y busca en los archivos y en la base de datos más que en las páginas.

Las ocho infecciones y cómo detectarlas

1. Spam SEO: palabras japonesas, farmacia, casino

Es la infección más extendida. El atacante crea miles de páginas (a menudo en carpetas con nombres aleatorios) llenas de texto en japonés, medicamentos o juegos de azar, para aprovechar la reputación de tu dominio. Google describe en detalle este «hackeo de palabras clave en japonés». Para detectarlo, busca en Google:

site:tudominio.es casino
site:tudominio.es viagra OR cialis OR pharmacy
site:tudominio.es 激安
site:tudominio.es inurl:.html

La tercera búsqueda apunta a una palabra japonesa muy frecuente en este spam («precio de derribo»). La última saca a la luz páginas .html que WordPress no genera normalmente. En Search Console, el informe Rendimiento también muestra consultas en un idioma que no usas.

2. Páginas desconocidas en el índice y un propietario de más

En Search Console, abre Configuración y luego «Usuarios y permisos»: un propietario que no conoces es una señal fuerte, porque los atacantes se añaden para que se indexen sus páginas. Revisa después el informe Sitemaps: un sitemap que no enviaste, o un número de páginas descubiertas que se dispara, confirma la inyección. La herramienta de inspección de URLs muestra lo que Google recibió realmente, aunque a ti la página te devuelva un error 404.

3. Redirecciones solo para móviles o para quien llega desde Google

¿Tus clientes se quejan de acabar en un sitio fraudulento y tú no consigues reproducirlo? La redirección suele apuntar solo a móviles, a visitantes que vienen de un buscador o a una única visita por dirección IP. Prueba desde la línea de comandos imitando a esos visitantes:

curl -sI -A "Mozilla/5.0 (iPhone; CPU iPhone OS 18_0 like Mac OS X) Mobile" \
     -e "https://www.google.com/" https://tudominio.es/

Una cabecera Location hacia otro dominio delata una redirección en el servidor. Si no aparece nada, la redirección puede hacerse en JavaScript: abre el sitio desde un smartphone con datos móviles, en navegación privada, haciendo clic en un resultado de Google. Busca después reglas añadidas al principio del archivo .htaccess.

4. Archivos sospechosos en el servidor

Conéctate por SFTP o SSH. Unas pocas búsquedas bastan para sacar a la luz los escondites habituales:

# PHP en la carpeta de medios: no debería haber ninguno
find wp-content/uploads -type f -name "*.php"

# Archivos .ico que no son favicons, y líneas @include que los cargan
find . -type f -name "*.ico" ! -name "favicon.ico"
grep -rlE --include=*.php "@include.*\.ico" .

# Archivos renombrados .suspected por un escáner del alojamiento
find . -name "*.suspected"

# Funciones usadas a menudo para ocultar código (muchos falsos positivos)
grep -rlE --include=*.php "eval\(|base64_decode\(|gzinflate\(|str_rot13\(" wp-content

# Archivos PHP modificados en los últimos 14 días, los más recientes primero
find . -type f -name "*.php" -mtime -14 -printf "%TY-%Tm-%Td %p\n" | sort -r | head -40

Un archivo .ico que contiene PHP, un nombre como wp-user.php en la raíz o un archivo PHP en uploads son indicios fuertes. Los archivos .suspected significan que un escáner ya encontró una infección: el código que los creó puede seguir ahí. Recuerda también que la fecha de modificación se falsifica con un solo comando: un archivo fechado en 2019 no está necesariamente limpio.

5. Archivos del núcleo modificados

WP-CLI compara tus archivos con las sumas de verificación publicadas por WordPress.org. Es la prueba más fiable para el núcleo y los plugins gratuitos:

wp core verify-checksums --include-root
wp plugin verify-checksums --all

Estos comandos no cubren ni los temas, ni los plugins premium, ni wp-config.php. Abre este último y lee el final: nada debe aparecer después de la línea require_once ABSPATH . 'wp-settings.php';. Justo ahí inyectaba su código la puerta trasera de EssentialPlugin.

6. Cuentas de administrador desconocidas

Algunas puertas traseras ocultan su cuenta en la lista de usuarios del Escritorio. Consulta directamente la base de datos (sustituye wp_ por el prefijo de tus tablas):

wp user list --role=administrator --fields=ID,user_login,user_email,user_registered

wp db query "SELECT u.ID, u.user_login, u.user_email, u.user_registered
  FROM wp_users u JOIN wp_usermeta m ON m.user_id = u.ID
  WHERE m.meta_key = 'wp_capabilities' AND m.meta_value LIKE '%administrator%'"

Si la consulta SQL devuelve más cuentas que wp user list o que la pantalla Usuarios, hay una cuenta oculta. Una fecha de registro en la que nadie trabajó en el sitio, o una dirección de correo desechable, basta para considerar la cuenta hostil.

7. Tareas programadas y plugins ocultos que reinfectan

¿Borraste un archivo y al día siguiente ha vuelto? Una tarea programada o un plugin «imprescindible» (carpeta mu-plugins, cargado automáticamente e invisible en la lista habitual) lo vuelve a crear.

wp cron event list --fields=hook,next_run_relative,recurrence
wp plugin list --status=must-use
wp plugin list --status=dropin

Un hook con un nombre aleatorio, o que no corresponde a ningún plugin instalado, merece una búsqueda en el código. Revisa también el crontab del servidor y las tareas programadas del panel del alojamiento. Nuestra definición de cron explica la diferencia entre ambos.

8. Inyecciones en la base de datos

Parte de las infecciones no toca ningún archivo: vive en la base de datos. Tres comprobaciones cubren los casos habituales:

# Dirección del sitio: un valor ajeno redirige todo el sitio
wp option get siteurl
wp option get home

# Scripts inyectados en los contenidos
wp db query "SELECT ID, post_title, post_status FROM wp_posts
  WHERE post_content LIKE '%

Puede haber resultados legítimos (un widget con un código de analítica, una entrada que muestra código): revisa cada línea. En una tienda WooCommerce, un script desconocido en la página de pago debe hacerte pensar en un robo de tarjetas y exige una reacción inmediata.

Las señales externas: Search Console y listas negras

  • Search Console, «Problemas de seguridad» y «Acciones manuales»: Google señala ahí el contenido hackeado con ejemplos de URLs.
  • Informe de transparencia de Google (Navegación segura): indica si tu dominio se considera peligroso en este momento. Si es así, sigue nuestra guía para salir de la lista de Safe Browsing.
  • Escáneres remotos (Sucuri SiteCheck, VirusTotal): ven las páginas públicas y las listas negras, nada de lo que ocurre en el servidor.
  • Correo: mensajes que llegan a la carpeta de spam de tus clientes o rebotes masivos de «no entregado» pueden indicar un script que envía spam.

Tabla resumen

InfecciónSíntomaConfirmaciónFalso positivo frecuente
Spam SEOTítulos extranjeros en GoogleBúsquedas site:, Search ConsolePáginas antiguas borradas aún en caché
Redirección dirigidaQuejas de visitantes móvilescurl con User-Agent móvil y RefererRedirección legítima de idioma o de aplicación
Puerta traseraA menudo ningunoBúsqueda de archivos, sumas de verificaciónCódigo codificado de un plugin comercial
Cuenta ocultaNinguno en el EscritorioConsulta SQL sobre los rolesCuenta técnica del alojamiento
ReinfecciónArchivos que reaparecenCron, mu-plugins, crontab del servidorTareas de un plugin de caché o de copias
Inyección en la baseScripts desconocidos en las páginasConsultas sobre contenidos y opcionesCódigos de analítica
Cada sospecha se confirma con una comprobación que no depende de tu navegador.

Recibir avisos en lugar de buscar

Estas comprobaciones llevan una hora; nadie las hace cada semana. WP Masquerade Pro automatiza parte de la detección, sin presentarse como lo que no es:

  • Control de integridad: cada día, los archivos del núcleo se comparan con la lista oficial de WordPress.org; los archivos modificados, los que faltan y los archivos PHP desconocidos en wp-admin o wp-includes se notifican por correo.
  • Registro de actividad: creación de un administrador, cambio de rol, plugin instalado en plena noche, correo de la cuenta modificado.
  • Alertas: inicio de sesión de un administrador desde un dispositivo desconocido, nueva vulnerabilidad conocida en un plugin instalado, informe cada lunes.

Límites que conviene conocer: el control de integridad cubre el núcleo, no los plugins, los temas, los medios ni la base de datos; el registro no ve lo que pasa por FTP. WP Masquerade no es un antivirus: para analizar wp-content y la base de datos, añade un escáner como los que presentamos en Wordfence y WP Masquerade o MalCare y WP Masquerade.

Si encuentras algo

No borres nada con prisas. Copia los archivos sospechosos y los registros del servidor (fechan la intrusión), pon el sitio en mantenimiento y sigue el procedimiento de limpieza paso a paso. Tras la limpieza, aplica el método para proteger WordPress para evitar la reinfección y solicita la reconsideración a Google si se indexaron páginas de spam.

«How to Remove Malware & Clean a Hacked WordPress Site», canal oficial de Sucuri (en inglés, 2019): el equipo de limpieza muestra dónde busca los archivos y las entradas de base de datos infectados; las interfaces han cambiado, el enfoque sigue siendo válido.

Preguntas frecuentes

Mi sitio se ve normal: ¿puede estar hackeado de todos modos?

Sí. Muchas infecciones solo se muestran a los robots de los buscadores, a los visitantes móviles o a quien no ha iniciado sesión. Una puerta trasera también puede permanecer en silencio hasta que se activa.

¿Cómo comprobarlo sin acceso SSH?

Haz las comprobaciones externas (búsquedas site:, Search Console, informe de transparencia), recorre las carpetas por SFTP ordenando por fecha y usa phpMyAdmin para las consultas SQL. Un escáner instalado en WordPress completa estas verificaciones.

¿Un resultado con base64_decode significa que hay un hackeo?

No necesariamente: algunos plugins legítimos lo usan. Lo que alerta es la combinación: función de codificación, archivo en un lugar inusual, fecha reciente y nombre que imita un archivo de WordPress.

¿WP Masquerade detecta el malware?

Pro detecta las modificaciones de los archivos del núcleo y las acciones sospechosas de las cuentas, y te avisa. No es un antivirus: no analiza el código de los plugins, de los temas ni la base de datos.

Lo esencial

  • Las infecciones se esconden del administrador: prueba como Google, como un móvil y desde la línea de comandos.
  • Las búsquedas site: y Search Console revelan el spam SEO y los propietarios añadidos.
  • Archivos: PHP en uploads, .ico que contienen PHP, .suspected, final de wp-config.php.
  • Cuentas y persistencia: compara SQL y Escritorio, revisa cron y mu-plugins.
  • Base de datos: siteurl, scripts en los contenidos y en las opciones.

Entérate antes que tus clientes

WP Masquerade Pro controla cada día la integridad del núcleo, registra las acciones de los administradores y te avisa por correo. La versión gratuita ya reduce lo que los robots ven de tu sitio.

Fuentes

  • web.dev: Fix the Japanese keyword hack (enlace externo, se abre en una pestaña nueva)
  • WP-CLI: wp core verify-checksums (enlace externo, se abre en una pestaña nueva)
  • Google: informe de transparencia de Navegación segura (enlace externo, se abre en una pestaña nueva)
  • BleepingComputer: WordPress plugin suite hacked to push malware (enlace externo, se abre en una pestaña nueva)
Supervisión y respuesta8 min

Limpiar un sitio WordPress hackeado: el procedimiento paso a paso

Un procedimiento en ocho pasos, basado en WordPress.org y el CERT-FR, para limpiar un sitio WordPress hackeado sin reinfección: desde el aislamiento hasta la solicitud de…

Seguridad de WordPress, sin ruido

Un correo cuando importa: nuevos ataques observados, actualizaciones de la extensión y guías prácticas. Sin spam, baja con un clic.