Eliminar código malicioso en header y footer WordPress
Aprende a eliminar código malicioso WordPress en header y footer sin romper tu web y reduce reinfecciones con una limpieza completa.
Cuando aparece código extraño en el header, el footer o en archivos como functions.php, conviene actuar con método. Para eliminar código malicioso WordPress sin romper el sitio no basta con borrar una línea sospechosa: hay que identificar dónde carga, revisar si existe persistencia y cerrar la vía por la que se volvió a insertar.
Encontrar código malicioso en header y footer significa que una inyección se está ejecutando en zonas globales de carga del tema o de WordPress. Eso compromete todo el sitio porque ese código puede afectar a casi todas las páginas, alterar redirecciones, insertar spam SEO o cargar scripts no autorizados según el origen de la infección.
Si detectas malware en header o footer, lo prudente es hacer una copia, limitar cambios en producción, escanear, comparar archivos con versiones limpias, revisar tema, plugins, usuarios y tareas programadas, y solo después limpiar. Si no corriges la persistencia o la vía de entrada, la reinfección es frecuente.
A continuación tienes un proceso técnico y realista para detectar, limpiar y prevenir inyecciones en wp_head, wp_footer, archivos del tema y componentes relacionados.
Qué revisar antes de limpiar WordPress hackeado
Antes de editar o borrar nada, prepara el entorno. Una limpieza precipitada puede dificultar el diagnóstico o dejar el sitio en un estado inconsistente.
Copia de seguridad y control de cambios
Genera una copia completa de archivos y base de datos. Si el sitio sigue comprometido, esa copia no es “limpia”, pero sí sirve para análisis y rollback controlado. Si el impacto es visible o hay riesgo para usuarios, valora activar un modo mantenimiento temporal o restringir acceso mientras se trabaja.
Escaneo y comparación con versiones legítimas
Conviene combinar un escaneo automatizado con una revisión manual. El escaneo puede señalar archivos alterados, pero la confirmación suele requerir comparación con versiones oficiales del core, del tema y de los plugins. En temas personalizados, la referencia válida será tu repositorio o una copia previa verificada.
Inventario de componentes cargados
Haz inventario de todo lo que ejecuta código: tema activo, child theme, plugins, must-use plugins, snippets cargados desde panel, tareas cron y personalizaciones fuera de WordPress que dependan del hosting. La infección puede no estar en el archivo que muestra el síntoma.
Usuarios, accesos y entorno
Revisa usuarios administradores, claves FTP/SFTP, acceso a base de datos, panel del hosting y cuentas de correo relacionadas si forman parte del flujo de recuperación. Si no se rotan credenciales después de la limpieza, una puerta de acceso previa puede seguir abierta.
Cómo eliminar código malicioso WordPress paso a paso sin romper el sitio
Para eliminar código malicioso WordPress de forma segura, trabaja por capas: identificar, aislar, limpiar, validar y corregir persistencia. El objetivo no es solo quitar el fragmento visible, sino dejar el sitio funcional y reducir la reinfección.
1. Verifica el alcance de la alteración
Comprueba si el problema afecta solo al frontend, también al panel, o incluso a archivos del servidor fuera de la instalación habitual. Revisa fechas de modificación, archivos recientemente creados y diferencias frente a copias conocidas como limpias.
2. Revisa theme, child theme y archivos de carga global
Inspecciona functions.php, header.php, footer.php y archivos incluidos por ellos. Fíjate en funciones de ejecución dinámica, llamadas remotas no justificadas, bloques ofuscados, inclusiones a rutas inesperadas o código añadido al principio o al final del archivo. Si el tema es estándar y no tiene personalizaciones críticas, suele ser más fiable reinstalarlo desde una fuente legítima y reintroducir cambios verificados que limpiar línea a línea.
3. Audita los hooks wp_head y wp_footer
Si el síntoma aparece en el código fuente del frontend, revisa qué funciones se están enganchando a wp_head y wp_footer. Muchas inyecciones no editan directamente header.php o footer.php, sino que usan hooks desde el tema, un plugin o un snippet persistente.
4. Examina plugins activos y mu-plugins
Los plugins de inserción de código, personalización o administración avanzada merecen una revisión prioritaria. Después comprueba la carpeta de mu-plugins, porque su carga automática puede mantener activa una puerta trasera aunque desactives plugins normales. Si un plugin oficial se ha modificado, conviene reinstalarlo desde su fuente original.
5. Revisa wp-config.php, .htaccess y archivos críticos
Comprueba si existen inclusiones, reglas, constantes o cargas adicionales fuera de lo esperado. En algunos casos, una redirección o ejecución no deseada se sostiene desde .htaccess o desde un archivo crítico que se ejecuta antes de llegar al tema.
6. Audita base de datos, opciones y contenido persistente
Busca cambios en opciones del sitio, widgets, fragmentos HTML guardados, contenido inyectado en entradas o tablas personalizadas. Según el tipo de infección, el código malicioso theme visible en frontend puede estar siendo reconstruido desde base de datos cada vez que se carga la página.
7. Revisa usuarios administradores y cron
Elimina usuarios no reconocidos o degrada permisos de forma segura tras verificar su origen. Después revisa eventos cron de WordPress y, si tienes acceso, tareas programadas del servidor. Un cron malicioso puede reescribir archivos limpios o restaurar configuraciones comprometidas.
8. Limpia o reemplaza con versiones verificadas
Siempre que sea posible, sustituye archivos del core, plugins y temas por copias legítimas en lugar de editar sobre la marcha. En personalizaciones propias, limpia solo después de entender qué hace cada bloque. Borrar a ciegas puede romper funciones válidas o dejar parte de la puerta trasera operativa.
9. Valida en frontend y backend
Comprueba que han desaparecido los síntomas, revisa el código fuente generado, prueba acceso al panel, limpia cachés y vuelve a escanear. Si usas CDN, caché de servidor o sistemas de optimización, purga todo antes de dar por cerrada la incidencia.
Checklist rápida de limpieza manual
- Hacer copia de archivos y base de datos.
- Limitar cambios en producción y activar mantenimiento si procede.
- Escanear y comparar con versiones limpias.
- Revisar theme, child theme y functions.php.
- Auditar hooks wp_head y wp_footer.
- Reinstalar o limpiar plugins y mu-plugins.
- Comprobar wp-config.php, .htaccess, base de datos, usuarios y cron.
- Rotar credenciales y validar que no reaparece.
Qué hacer si el malware vuelve a aparecer
Si el malware vuelve, lo más probable es que se haya limpiado el síntoma pero no la persistencia o la vía de acceso. No significa siempre lo mismo: puede haber una puerta trasera residual, un componente vulnerable aún activo, un usuario comprometido o incluso una restauración automática desde una tarea programada.
Busca persistencia, no solo el archivo visible
Revisa especialmente mu-plugins, archivos sueltos en rutas poco habituales, cron, opciones de base de datos y cuentas con privilegios elevados. También conviene comprobar si el hosting ha detectado scripts maliciosos fuera de la carpeta principal del sitio.
Cierra el acceso inicial
Actualizar solo después de limpiar no siempre basta si sigue existiendo una credencial expuesta, un plugin vulnerable, permisos inseguros o acceso administrativo no controlado. La desinfección WordPress real termina cuando puedes explicar razonablemente por qué no debería reproducirse la incidencia.
Si hay reinfección repetida, suele ser más eficiente hacer una revisión integral de archivos, base de datos, usuarios, logs y configuración del servidor que seguir borrando fragmentos dispersos cada vez que aparecen.
Cómo reforzar la seguridad de WordPress después de la limpieza
Una vez recuperado el sitio, toca reducir superficie de riesgo. El hardening WordPress no garantiza riesgo cero, pero sí mejora la resistencia y la detección temprana.
- Actualiza core, plugins y temas, y elimina lo que no uses.
- Rota contraseñas de WordPress, hosting, SFTP/SSH, base de datos y correo relacionado.
- Activa 2FA para cuentas críticas si el entorno lo permite.
- Revisa permisos de archivos y directorios para evitar escrituras innecesarias.
- Valora un WAF o firewall de aplicación si el proyecto lo justifica.
- Configura copias de seguridad verificadas y con pruebas de restauración.
- Mantén monitorización de integridad de archivos, usuarios y cambios relevantes.
- Revisa el hosting: aislamiento entre sitios, versiones de PHP, logs y políticas de seguridad.
Como referencia oficial, la documentación de seguridad de WordPress ofrece buenas prácticas de endurecimiento, mantenimiento y revisión de entorno.
Conclusión
Limpiar una infección WordPress en header, footer o functions.php exige algo más que retirar un script visible. El proceso correcto pasa por hacer copia, identificar el alcance, revisar archivos del tema, plugins, hooks globales, base de datos, usuarios, cron y archivos críticos, y después validar que no existe persistencia.
El error más frecuente es limpiar solo el síntoma: desaparece el fragmento inyectado, pero el sitio sigue comprometido y el malware reaparece. Si necesitas una segunda revisión técnica o prefieres asegurar una limpieza completa antes de volver a operar con normalidad, el siguiente paso razonable es una auditoría integral o soporte especializado.
Si el objetivo es eliminar código malicioso WordPress con garantías, conviene tratar la incidencia como una limpieza completa del entorno, no como una simple edición puntual del header o del footer.
¿Necesitas orientación personalizada?
Te ayudamos a entender tus opciones y el siguiente paso.