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.
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ón | Síntoma | Confirmación | Falso positivo frecuente |
|---|---|---|---|
| Spam SEO | Títulos extranjeros en Google | Búsquedas site:, Search Console | Páginas antiguas borradas aún en caché |
| Redirección dirigida | Quejas de visitantes móviles | curl con User-Agent móvil y Referer | Redirección legítima de idioma o de aplicación |
| Puerta trasera | A menudo ninguno | Búsqueda de archivos, sumas de verificación | Código codificado de un plugin comercial |
| Cuenta oculta | Ninguno en el Escritorio | Consulta SQL sobre los roles | Cuenta técnica del alojamiento |
| Reinfección | Archivos que reaparecen | Cron, mu-plugins, crontab del servidor | Tareas de un plugin de caché o de copias |
| Inyección en la base | Scripts desconocidos en las páginas | Consultas sobre contenidos y opciones | Códigos de analítica |
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-adminowp-includesse 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.
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)


