Seguridad Equipo Avantys 11 min

Cómo Saber si tu WordPress ha Sido Hackeado

Señales técnicas para detectar si tu WordPress ha sido comprometido: archivos sospechosos, usuarios desconocidos, redirecciones y qué hacer al detectarlo.

// Compartir

Cómo Saber si tu WordPress ha Sido Hackeado

Un WordPress comprometido no siempre se nota de inmediato. Muchos ataques están diseñados precisamente para pasar desapercibidos el mayor tiempo posible, inyectando spam invisible para el propietario pero visible para los buscadores, o usando el servidor en segundo plano sin afectar visiblemente a la web.

Esta guía te da las señales concretas a revisar periódicamente, no solo cuando ya sospechas que algo va mal. Y, a diferencia de la mayoría, no se queda en “revisa si hay algo raro”: te damos los comandos y las comprobaciones exactas para revisar de verdad.

Si detectas cualquiera de estas señales, el proceso de limpieza está en Limpieza de Malware en WordPress: Proceso Paso a Paso.

Señal 1: archivos que no reconoces

Revisa periódicamente la estructura de carpetas de tu instalación, especialmente wp-content/uploads y la raíz del sitio, en busca de archivos con nombres extraños o extensiones que no deberían estar ahí. Un archivo .php dentro de la carpeta de imágenes es una señal clásica de código malicioso disfrazado: uploads guarda fotos y PDF, nunca debería ejecutar PHP.

La forma rápida de encontrar exactamente eso por SSH:

find wp-content/uploads -name '*.php' -o -name '*.phtml'

Si esa consulta devuelve algo, es casi con seguridad una puerta trasera. Y para ver qué se ha tocado en las últimas horas (útil justo después de sospechar un ataque):

find . -type f -name '*.php' -mtime -2

Eso lista los .php modificados en los últimos dos días. Si aparecen archivos del core o de un plugin que tú no has actualizado, algo los ha reescrito.

Señal 2: usuarios administradores que no recuerdas haber creado

Revisa la lista de usuarios de tu WordPress periódicamente. Un usuario con rol de administrador que nadie de tu equipo recuerda haber creado es una de las señales más claras de que alguien ha conseguido acceso no autorizado.

El panel es lo cómodo, pero algunos ataques ocultan al usuario de la vista listándolo solo por consulta directa. Con WP-CLI se ve sin intermediarios:

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

Presta atención a fechas de registro que no cuadren y a correos que no reconozcas. Si sobra alguien, no basta con borrarlo: asume que ya ha podido dejar otras puertas abiertas y sigue el proceso de limpieza completo.

Señal 3: redirecciones extrañas

Si al visitar tu propia web (especialmente desde ciertos países, dispositivos móviles, o llegando desde un buscador) acabas en una página completamente distinta a la esperada, es un patrón habitual de cloaking malicioso, el atacante muestra contenido normal a los administradores pero redirige a otros visitantes hacia webs fraudulentas.

Estas redirecciones suelen esconderse en tres sitios: el .htaccess, el fichero wp-config.php, o inyectadas en la base de datos (opciones siteurl/home o en el contenido). Revisa el .htaccess en busca de reglas que no hayas puesto:

cat .htaccess

Y comprueba que las URLs base de tu sitio son las tuyas y no las de un dominio ajeno:

wp option get siteurl
wp option get home

Como el cloaking depende del User-Agent y del Referer, para reproducirlo conviene simular ser Googlebot o llegar desde una búsqueda, no visitar la home directamente desde tu navegador de siempre.

Señal 4: alertas de Google Search Console o del navegador

Google marca activamente webs comprometidas con avisos de “sitio pirateado” o “contenido dañino” en Search Console, y los navegadores modernos muestran pantallas de advertencia a los visitantes si detectan malware. Revisar Search Console periódicamente, no solo cuando algo parece ir mal, permite detectar esto antes de que un cliente te lo reporte.

Dentro de Search Console, los dos apartados que importan son Problemas de seguridad (avisa de sitio pirateado o software malicioso) e Índice > Páginas: un pico repentino de páginas indexadas que tú no has creado suele ser spam SEO inyectado. Ese salto de URLs fantasma es, muchas veces, la primera pista objetiva de un compromiso.

Señal 5: rendimiento degradado sin explicación

Algunos ataques usan tu servidor en segundo plano para minar criptomonedas, enviar spam masivo, o formar parte de una red de ataques distribuidos (DDoS) contra otros objetivos. Si tu web empeora en velocidad sin ningún cambio reciente que lo justifique, revisar el uso de CPU y procesos activos en tu servidor puede revelar actividad no autorizada.

Con acceso SSH, un vistazo rápido a qué está consumiendo la máquina:

top -c

Un proceso de PHP consumiendo CPU de forma sostenida cuando no hay tráfico, o un binario con nombre raro tirando del procesador, son sospechosos. Otra pista frecuente del servidor usado como emisor de spam es una cola de correo desbordada: si el hosting te avisa de envíos masivos o de que tu IP ha entrado en listas negras sin que tú mandes newsletters, revisa. Descarta antes lo obvio (un plugin pesado, un pico real de visitas, un backup en marcha) para no confundir carga legítima con ataque.

Señal 6: contenido o enlaces que no reconoces

Enlaces ocultos (a menudo insertados con CSS para no ser visibles a simple vista pero sí detectables por los motores de búsqueda) hacia webs de farmacia, apuestas o productos falsificados son uno de los objetivos más comunes de las inyecciones de spam SEO. Revisa el código fuente de tus páginas periódicamente, buscando enlaces que no hayas añadido tú mismo.

El spam SEO suele ocultarse con estilos como display:none, position:absolute fuera de pantalla o texto del mismo color que el fondo. Puedes buscar patrones sospechosos directamente en los ficheros del tema y de los plugins:

grep -rn 'display:none' wp-content/themes/

Dónde se esconden las puertas traseras

Detectar el síntoma es la mitad; saber dónde mirar es la otra. Los sitios donde más veces encontramos código malicioso escondido:

  • wp-config.php: código añadido al principio o al final del archivo, fuera de las líneas normales de configuración.
  • wp-content/mu-plugins/: los must-use plugins se cargan siempre y no aparecen en la lista normal de plugins del panel, un escondite favorito.
  • functions.php del tema activo: fácil de inyectar, se ejecuta en cada carga.
  • Falsos plugins: carpetas dentro de wp-content/plugins/ con nombres que imitan a plugins legítimos pero que tú nunca instalaste.
  • La carpeta uploads: cualquier .php ahí es sospechoso por definición.
  • La base de datos: inyecciones en la tabla wp_options (por ejemplo, tareas programadas maliciosas) o en el contenido de entradas y páginas.

El código de una puerta trasera casi siempre está ofuscado. Estas funciones, encadenadas, son la firma habitual: eval(, base64_decode(, gzinflate(, str_rot13(, preg_replace con el modificador /e. Una búsqueda que las peine todas:

grep -rEn 'eval\(|base64_decode\(|gzinflate\(|str_rot13\(|assert\(' wp-content/

Ojo: no todo lo que aparezca es malicioso (algunos plugins legítimos usan base64 para cosas inocentes), pero cualquier resultado merece que lo mires con calma antes de descartarlo.

Cómo hacer una revisión rápida mensual

ComprobaciónDónde revisarlo
Usuarios administradoresPanel de WordPress o wp user list --role=administrator
Archivos recientes modificadosfind . -name '*.php' -mtime -7 o gestor de archivos por fecha
Integridad del core y pluginswp core verify-checksums
Alertas de seguridadGoogle Search Console, apartado Problemas de seguridad
Páginas indexadas de másSearch Console, Índice > Páginas
Actividad de CPU inusualtop por SSH o panel de control del hosting
Enlaces/estilos ocultosVer código fuente y grep sobre el tema

Herramientas que ayudan a la detección

Un plugin de seguridad con escaneo periódico compara los archivos actuales de tu instalación con versiones conocidas limpias de WordPress y de los plugins instalados, señalando discrepancias que pueden indicar modificación no autorizada. No sustituye la revisión manual periódica, pero automatiza buena parte de la detección rutinaria.

La comprobación más honesta y gratuita la trae el propio WordPress a través de WP-CLI: verifica los ficheros del core contra los oficiales de WordPress.org.

wp core verify-checksums

Si algún archivo del core ha sido modificado, lo canta. La misma idea, extendida a los plugins del repositorio oficial:

wp plugin verify-checksums --all
HerramientaQué detectaLímite
wp core verify-checksumsFicheros del core alteradosSolo el core, no el tema ni plugins de pago
wp plugin verify-checksumsPlugins del repositorio oficial alteradosNo cubre plugins premium ni el tema
Plugin de seguridad (escáner)Firmas de malware, cambios en archivosFalsos positivos; no ve todo a nivel de servidor
Google Search ConsoleReputación y spam indexadoReactivo: avisa cuando ya hay daño visible
Escaneo del hostingMalware a nivel de servidorNo todos los hostings lo incluyen

Ninguna herramienta sola lo cubre todo: los checksums no ven un tema de pago, el escáner de un plugin no ve un proceso a nivel de sistema, y Search Console solo reacciona cuando el daño ya es visible. La combinación es lo que funciona.

Qué hacer en cuanto detectas una señal

  1. No entres en pánico ni empieces a borrar archivos al azar sin antes hacer una copia del estado actual (aunque esté comprometido) para poder analizarlo con calma.
  2. Cambia todas las contraseñas de acceso: WordPress, base de datos, FTP/panel de hosting, un ataque exitoso puede haber capturado credenciales que siguen siendo válidas. Añade forzar el cierre de todas las sesiones activas, por si el atacante mantiene una abierta.
  3. Aísla el alcance: revisa si el problema afecta solo a archivos concretos o a la base de datos también.
  4. Sigue el proceso completo de limpieza detallado en Limpieza de Malware en WordPress: Proceso Paso a Paso, en lugar de intentar soluciones parciales que pueden dejar puertas traseras activas.

Y una precaución de fondo: la mejor detección es la que casi nunca hace falta. Mantener el core, el tema y los plugins al día cierra la mayoría de las puertas por las que entran estos ataques, el porqué está en Riesgos de no actualizar WordPress.

Cuándo estas comprobaciones no bastan

Las señales de esta guía detectan la mayoría de compromisos comunes, pero tienen puntos ciegos honestos que conviene conocer. Un atacante hábil puede modificar las marcas de tiempo de los archivos para que find -mtime no los delate. El malware más sofisticado se inyecta en memoria o en la base de datos, donde un escaneo de ficheros no llega. Y si el compromiso viene de una vulnerabilidad a nivel de servidor (no de WordPress) ninguna de estas revisiones desde el propio WordPress lo verá. Cuando has limpiado y el problema reaparece a los pocos días, casi siempre significa que quedó una puerta trasera que no encontraste, o que el vector de entrada original sigue abierto. Ahí es cuando conviene una auditoría a nivel de servidor, no otra pasada de plugin.

Preguntas Frecuentes

¿Con qué frecuencia debería revisar estas señales? Mensualmente como mínimo, y de forma automatizada mediante un plugin de seguridad con escaneo periódico si es posible.

¿Un usuario administrador desconocido siempre significa que me han hackeado? Es una señal muy fuerte, pero verifica primero si no fue creado legítimamente por alguien de tu equipo antes de asumir un compromiso, aunque en la mayoría de casos, sí indica acceso no autorizado.

¿Puedo confiar solo en un plugin de seguridad para detectar todo esto? Ayuda mucho, pero no sustituye completamente la revisión manual periódica, especialmente para patrones sutiles como redirecciones que solo aparecen desde ciertas ubicaciones geográficas.

¿Cómo sé si una redirección extraña es un ataque o un error de configuración mío? Prueba a acceder desde distintos dispositivos, redes y, si es posible, con una VPN simulando otro país. Si el comportamiento cambia según el origen de la visita, es más probable que sea un ataque de cloaking que un error de configuración propio.

¿El hosting debería detectar esto por mí automáticamente? Algunos hostings administrados incluyen escaneo de malware a nivel de servidor, pero no todos, y ninguno sustituye completamente la revisión activa desde el propio WordPress.

¿Qué hago si encuentro archivos sospechosos pero no estoy seguro de si son maliciosos? No los elimines sin verificar antes, compáralos con una instalación limpia de WordPress o del plugin correspondiente, o consulta con un profesional antes de borrar algo que podría ser legítimo.

¿Cambiar todas las contraseñas es realmente necesario si solo veo un archivo sospechoso? Sí, es una medida de precaución razonable, si un atacante consiguió insertar un archivo, es posible que también haya capturado credenciales de acceso.

¿Google elimina automáticamente el aviso de “sitio pirateado” una vez limpio? No automáticamente, tras limpiar la web, hay que solicitar una revisión manual a través de Search Console para que Google confirme que el problema se ha resuelto y retire el aviso.

¿Sirve wp core verify-checksums si mi tema o mis plugins son de pago? Solo en parte. Los checksums verifican el core y los plugins del repositorio oficial de WordPress.org, pero no pueden validar un tema o un plugin premium que no vive en ese repositorio. Para esos, la comparación tiene que ser contra la copia limpia que te entregó el proveedor.

Encontré una puerta trasera y la borré. ¿Ya está? Casi nunca. Los atacantes rara vez dejan una sola puerta: es habitual encontrar varias, más un usuario oculto y una tarea programada que las regenera. Borrar una y dar el tema por cerrado es la causa número uno de reinfección. Haz la limpieza completa.

¿Reinstalar WordPress desde cero soluciona el hackeo? Reinstalar el core limpio ayuda, pero si la infección está en el tema, en un plugin, en uploads o en la base de datos, seguirá ahí después de reinstalar. La limpieza tiene que cubrir todas las capas, no solo los ficheros del core.

Conclusión

La mayoría de compromisos de seguridad en WordPress no se anuncian con una pantalla dramática, se esconden en detalles que solo aparecen si los buscas activamente: un usuario de más, un archivo fuera de lugar, un enlace invisible. Revisar estas señales periódicamente, no solo cuando algo ya “parece raro”, es la diferencia entre detectar un problema en días o en meses.

Si prefieres que esta vigilancia la llevemos nosotros de forma continua, en Avantys la incluimos dentro de Gestión WordPress.

Artículos relacionados


¿Y si tu WordPress lo lleváramos nosotros?

Actualizaciones, seguridad, backups verificados, staging y rendimiento, gestionado de forma continua por una persona que responde, donde ya lo tengas o te lo montamos. Auditoría gratuita de tu web actual.

Ver WordPress Gestionado
// Boletín

Suscríbete al boletín

Guías nuevas, sin spam. Cancela cuando quieras.