Eliminar inyecciones de código en WordPress hackeado
Guía completa para eliminar inyecciones de código en WordPress hackeado, limpiar malware, reforzar seguridad y prevenir futuros ataques.
Índice
- ¿Qué es una inyección de código en WordPress?
- Síntomas de un WordPress hackeado por inyección de código
- Primeros pasos antes de limpiar el sitio
- Cómo detectar inyecciones de código en WordPress
- Eliminar inyecciones de código en archivos de WordPress
- Limpiar inyecciones de código en la base de datos
- Revisar usuarios y accesos comprometidos
- Reforzar la seguridad después del hackeo
- Medidas de prevención a largo plazo
- Errores comunes al limpiar un WordPress hackeado
- Preguntas frecuentes
¿Qué es una inyección de código en WordPress?
Una inyección de código en WordPress es una modificación no autorizada de los archivos o de la base de datos del sitio, realizada por un atacante para ejecutar código malicioso. Este código puede ser PHP, JavaScript, HTML o incluso SQL, y su objetivo suele ser robar datos, redirigir tráfico, enviar spam, minar criptomonedas o utilizar tu servidor para otras actividades ilícitas.
WordPress, al ser el gestor de contenidos más utilizado del mundo, es un objetivo frecuente. Los atacantes aprovechan vulnerabilidades en plugins, temas, contraseñas débiles o configuraciones inseguras para introducir código malicioso que se ejecuta de forma silenciosa en tu sitio web.
- Inyecciones en archivos del núcleo de WordPress (core).
- Inyecciones en temas y plugins instalados.
- Inyecciones en la base de datos (entradas, opciones, widgets).
- Inyecciones en .htaccess u otros archivos del servidor.
Entender qué es una inyección de código es clave para eliminarla correctamente. No se trata solo de borrar fragmentos sospechosos, sino de identificar el vector de entrada, limpiar todas las trazas y reforzar la seguridad para evitar que el ataque se repita.
Síntomas de un WordPress hackeado por inyección de código
Detectar a tiempo que tu WordPress ha sido hackeado es fundamental para minimizar el daño. Las inyecciones de código pueden ser muy discretas, pero suelen dejar señales claras si se observan con atención el comportamiento del sitio y las alertas de seguridad.
- Cambios visuales inesperados en la web (banners, pop-ups, textos extraños).
- Redirecciones automáticas a sitios de spam, casinos, contenido adulto o phishing.
- Mensajes de advertencia de navegadores ("sitio engañoso", "sitio puede dañar tu equipo").
- Alertas de Google Search Console sobre contenido hackeado o malware.
- Incremento anormal del consumo de CPU, memoria o ancho de banda en el hosting.
- Archivos desconocidos o modificados recientemente en el servidor.
- Correos rebotados por spam enviados desde tu dominio sin tu autorización.
- Usuarios administradores nuevos o cambios en los permisos de usuarios existentes.
Ante cualquiera de estos síntomas, lo recomendable es actuar de inmediato: limitar el acceso, hacer copias de seguridad del estado actual (para análisis forense) y comenzar un proceso ordenado de limpieza y desinfección del sitio WordPress.
Primeros pasos antes de limpiar el sitio
Antes de eliminar las inyecciones de código en un WordPress hackeado, es imprescindible preparar el entorno. Una intervención improvisada puede agravar el problema, provocar pérdida de datos o dejar puertas traseras activas. Estos pasos iniciales te ayudarán a trabajar con seguridad y orden.
- Avisa al hosting: informa al proveedor para que revise el servidor, limite daños y, si es posible, te facilite logs de acceso.
- Activa modo mantenimiento: reduce el impacto en usuarios y evita que el malware siga interactuando con visitantes.
- Realiza una copia de seguridad completa: descarga archivos y base de datos tal como están para poder analizarlos y, si es necesario, restaurar partes concretas.
- Cambia contraseñas críticas: panel de hosting, FTP/SFTP, base de datos, usuarios administradores de WordPress y correo asociado.
- Revisa dispositivos locales: asegúrate de que el equipo desde el que trabajas no tiene malware ni keyloggers.
Nunca limpies un WordPress hackeado sin copia previa. Aunque el sitio esté comprometido, ese snapshot es valioso para identificar el origen del ataque, comparar archivos y, en último caso, recuperar contenido que no tengas en otras copias de seguridad.
Cómo detectar inyecciones de código en WordPress
La detección precisa de las inyecciones de código es el paso clave para una limpieza efectiva. Combinar herramientas automáticas con revisión manual aumenta enormemente las probabilidades de localizar todo el código malicioso presente en tu instalación de WordPress.
Herramientas automáticas de escaneo
Existen plugins y servicios especializados que analizan tu sitio en busca de malware, archivos alterados y patrones de inyección de código. Algunos de los más utilizados son:
- Plugins de seguridad como Wordfence, Sucuri Security, iThemes Security o All In One WP Security.
- Escáneres externos como Sucuri SiteCheck o VirusTotal para analizar URLs y archivos.
- Herramientas del propio hosting que comparan archivos con versiones limpias.
Estas soluciones detectan muchos tipos de malware comunes, pero no siempre identifican código personalizado u ofuscado. Por eso es importante complementar con una revisión manual.
Revisión manual de archivos
La revisión manual consiste en inspeccionar archivos críticos del sitio, buscando patrones sospechosos. Es especialmente útil en:
- Archivos del núcleo de WordPress:
wp-config.php,index.php,wp-settings.php,wp-load.php. - Carpetas
wp-admin,wp-includesywp-content(especialmentepluginsythemes). - Archivos en la raíz:
.htaccess,php.ini,web.configen servidores Windows.
Busca código ofuscado, funciones desconocidas, bloques de PHP añadidos al principio o final de archivos, y cadenas relacionadas con eval, base64, gzinflate, shell_exec u otras funciones potencialmente peligrosas.
Comparación con versiones limpias
Una técnica muy efectiva es comparar tus archivos con una copia limpia de la misma versión de WordPress, del tema y de los plugins. Puedes hacerlo de varias formas:
- Descargar la misma versión de WordPress desde el repositorio oficial y comparar con herramientas de diff.
- Reinstalar plugins y temas desde fuentes oficiales y comparar tamaños y fechas de modificación.
- Usar sistemas de control de versiones (como Git) si ya los tenías implementados.
Combinar escáneres automáticos, revisión manual y comparación con versiones limpias te permitirá localizar la mayoría de las inyecciones de código. Documenta los hallazgos para poder verificar después que todo ha sido eliminado.
Eliminar inyecciones de código en archivos de WordPress
Una vez identificados los archivos afectados, el siguiente paso es eliminar el código malicioso de forma segura. Es preferible restaurar archivos completos desde fuentes confiables antes que editar manualmente fragmentos si no se tiene experiencia técnica suficiente.
Restaurar el núcleo de WordPress
El núcleo de WordPress no debe contener modificaciones personalizadas (salvo wp-config.php). Por ello, la forma más segura de limpiar inyecciones en estos archivos es reinstalar WordPress:
- Descarga desde wordpress.org la misma versión o una superior compatible.
- Sube por FTP/SFTP todos los archivos del núcleo, sobrescribiendo los existentes, excepto
wp-contentywp-config.php. - Verifica que no queden archivos extraños en la raíz o en
wp-includesywp-admin.
Limpiar temas y plugins
Los temas y plugins son uno de los vectores de ataque más habituales. Para limpiarlos:
- Elimina por completo los plugins y temas que no utilices.
- Descarga versiones originales desde el repositorio oficial o desde el proveedor de confianza.
- Sube de nuevo los archivos de cada plugin y tema activo, sobrescribiendo los existentes.
- Revisa especialmente archivos como
functions.php,header.php,footer.phpy404.phpen el tema activo.
Eliminar puertas traseras y archivos sospechosos
Además del código inyectado en archivos legítimos, los atacantes suelen dejar puertas traseras (backdoors) en archivos nuevos con nombres que imitan a los originales. Para localizarlos:
- Ordena archivos por fecha de modificación y revisa los más recientes.
- Busca archivos PHP en carpetas donde no deberían existir (por ejemplo, en
uploads). - Elimina scripts con nombres extraños o que no pertenezcan al tema o plugins instalados.
- Analiza el contenido de archivos pequeños con código ofuscado o funciones peligrosas.
Siempre que sea posible, sustituye archivos completos por versiones limpias en lugar de editar manualmente. Si debes editar, hazlo en una copia local, revisa el código con calma y vuelve a subir el archivo limpio al servidor.
Limpiar inyecciones de código en la base de datos
Muchas infecciones en WordPress no se limitan a los archivos: también afectan a la base de datos. El código malicioso puede insertarse en entradas, páginas, widgets, opciones o incluso en campos personalizados. Ignorar esta parte puede hacer que el malware se reactive aunque hayas limpiado los archivos.
Identificar tablas y campos afectados
Para detectar inyecciones en la base de datos, utiliza herramientas como phpMyAdmin, Adminer o el gestor que ofrezca tu hosting. Las tablas más habituales donde se inyecta código son:
wp_posts: contenido de entradas y páginas, incluyendo shortcodes y scripts.wp_postmeta: campos personalizados asociados a contenido.wp_options: opciones de la web, widgets, configuraciones de plugins.wp_commentsywp_commentmeta: comentarios con enlaces o scripts.
Realiza búsquedas por patrones típicos de malware (por ejemplo, etiquetas <script> sospechosas, iframes ocultos, URLs desconocidas, funciones de ofuscación) y revisa los resultados con cuidado.
Limpieza segura de registros
Una vez localizados los registros afectados, procede a limpiarlos:
- Haz una copia de seguridad específica de la base de datos antes de modificar nada.
- En campos de contenido, elimina únicamente el fragmento malicioso, respetando el resto del texto.
- En opciones o registros creados por el malware, elimina el registro completo si estás seguro de que no es legítimo.
- Utiliza consultas SQL con condiciones muy precisas para evitar borrar datos válidos.
Algunos plugins de seguridad ofrecen funciones de limpieza automática de la base de datos, pero es recomendable revisar manualmente los cambios que proponen antes de aplicarlos en producción.
Tras limpiar la base de datos, borra la caché del sitio (plugins de caché, CDN, navegador) y verifica que no se sigan inyectando scripts o redirecciones. Si el problema persiste, es posible que aún exista una puerta trasera en los archivos.
Revisar usuarios y accesos comprometidos
Las inyecciones de código en WordPress suelen ir acompañadas de accesos no autorizados. Aunque hayas limpiado archivos y base de datos, si un atacante conserva credenciales válidas o métodos de acceso alternativos, el sitio puede volver a ser comprometido en poco tiempo.
Usuarios de WordPress
Revisa el listado completo de usuarios desde el panel de administración de WordPress:
- Identifica usuarios administradores que no reconozcas y elimínalos.
- Reduce al mínimo el número de cuentas con rol de administrador.
- Cambia las contraseñas de todos los administradores y editores.
- Activa la autenticación en dos pasos (2FA) para las cuentas críticas.
Accesos al servidor y a la base de datos
Además de los usuarios de WordPress, es fundamental revisar los accesos al entorno de hosting:
- Cambia las contraseñas de FTP/SFTP, panel de control del hosting y base de datos.
- Elimina cuentas FTP que no se utilicen o que no sean necesarias.
- Revisa claves SSH y elimina las que no reconozcas.
- Comprueba si hay tareas programadas (cron jobs) sospechosas que ejecuten scripts maliciosos.
Sin una revisión exhaustiva de usuarios y accesos, cualquier esfuerzo por eliminar inyecciones de código puede ser temporal. Asegúrate de cerrar todas las puertas que el atacante haya podido utilizar para entrar en tu WordPress y en tu servidor.
Reforzar la seguridad después del hackeo
Una vez que has eliminado las inyecciones de código y limpiado tu WordPress hackeado, el siguiente paso es reforzar la seguridad para reducir al máximo la probabilidad de nuevos incidentes. Este proceso se conoce como hardening o endurecimiento de la instalación.
Configuraciones básicas de seguridad
Empieza por aplicar medidas básicas pero muy efectivas:
- Mantén siempre actualizado WordPress, temas y plugins.
- Elimina plugins y temas que no utilices, en lugar de dejarlos desactivados.
- Utiliza contraseñas robustas y únicas para todas las cuentas.
- Limita los intentos de acceso al panel de administración.
- Cambia la URL de acceso a /wp-admin si tu plugin de seguridad lo permite.
Medidas avanzadas de hardening
Para un nivel de protección superior, aplica medidas adicionales:
- Restringe el acceso a
wp-adminpor IP si es posible. - Deshabilita la edición de archivos desde el panel de WordPress añadiendo
define('DISALLOW_FILE_EDIT', true);enwp-config.php. - Configura permisos de archivos y carpetas adecuados (por ejemplo, 644 para archivos, 755 para directorios).
- Instala un firewall de aplicaciones web (WAF) a nivel de plugin o de servidor.
- Protege el archivo
wp-config.phpy el acceso axmlrpc.phpsi no lo utilizas.
El objetivo del hardening no es hacer tu sitio invulnerable (algo imposible), sino elevar el nivel de dificultad para los atacantes y reducir la superficie de ataque. Cuantas más capas de seguridad implementes, más complicado será comprometer tu WordPress de nuevo.
Medidas de prevención a largo plazo
La seguridad de un WordPress no es una acción puntual, sino un proceso continuo. Después de eliminar las inyecciones de código y reforzar la instalación, es importante establecer rutinas y políticas que mantengan el sitio protegido a largo plazo.
Política de actualizaciones y copias de seguridad
Define un plan claro para mantener tu sitio al día y poder recuperarlo rápidamente en caso de incidente:
- Programa revisiones periódicas (semanales o quincenales) de actualizaciones pendientes.
- Utiliza un sistema de copias de seguridad automatizadas con almacenamiento externo al servidor.
- Realiza pruebas de restauración periódicas para asegurarte de que las copias son válidas.
- Evita actualizar directamente en producción sin probar antes en un entorno de staging cuando sea posible.
Buenas prácticas de desarrollo y contenido
Si desarrollas funcionalidades a medida o permites a usuarios subir contenido, aplica buenas prácticas de seguridad:
- Valida y sanea todos los datos de entrada (formularios, comentarios, uploads).
- Limita los tipos de archivos que se pueden subir y su tamaño máximo.
- Evita ejecutar código directamente desde carpetas de subida como
uploads. - Revisa periódicamente los logs de errores y de acceso para detectar comportamientos anómalos.
La prevención a largo plazo se basa en tres pilares: actualización constante, copias de seguridad fiables y vigilancia activa. Integrar estos hábitos en la gestión diaria de tu WordPress es la mejor forma de evitar nuevas inyecciones de código y hackeos.
Errores comunes al limpiar un WordPress hackeado
Al enfrentarse a un WordPress hackeado, es frecuente cometer errores que complican la recuperación o dejan el sitio vulnerable a nuevos ataques. Conocer estos fallos habituales te ayudará a evitarlos y a gestionar la limpieza de forma más profesional.
- No hacer copia de seguridad antes de empezar a borrar archivos o modificar la base de datos.
- Eliminar solo el síntoma visible (por ejemplo, un script en el footer) sin buscar puertas traseras.
- Confiar exclusivamente en un plugin de seguridad sin realizar comprobaciones manuales.
- Restaurar una copia de seguridad antigua sin verificar que esté libre de malware.
- No cambiar contraseñas ni revisar usuarios y accesos al servidor.
- Dejar plugins y temas desactualizados o abandonados por sus desarrolladores.
- No documentar los cambios realizados, dificultando el seguimiento y futuras auditorías.
Evitar estos errores aumenta significativamente las probabilidades de una limpieza completa y duradera. Si el ataque es complejo o afecta a datos críticos, valora la posibilidad de contar con un especialista en seguridad WordPress para apoyar el proceso.
Preguntas frecuentes
¿Cómo saber si he eliminado todas las inyecciones de código?
No existe una garantía absoluta, pero puedes aumentar la seguridad de que el sitio está limpio realizando varios escaneos con herramientas distintas, comparando archivos con versiones originales, revisando la base de datos y monitorizando durante varios días el comportamiento del sitio, los logs de acceso y las alertas de seguridad.
¿Es mejor limpiar el sitio o restaurar una copia de seguridad?
Depende del caso. Si dispones de una copia de seguridad reciente y confirmadamente limpia, restaurarla puede ser más rápido. Sin embargo, si no sabes cuándo comenzó la infección o si la copia podría estar comprometida, es preferible limpiar manualmente y combinarlo con restauraciones parciales de archivos o tablas concretas.
¿Puedo eliminar inyecciones de código solo con plugins de seguridad?
Los plugins de seguridad son una ayuda importante, pero no deberían ser la única herramienta. Muchos tipos de malware personalizado u ofuscado pasan desapercibidos para los escáneres automáticos. Combina los plugins con revisión manual, comparación de archivos y análisis de la base de datos para obtener mejores resultados.
¿Cuánto tiempo puede llevar limpiar un WordPress hackeado?
El tiempo varía según la complejidad del ataque, el tamaño del sitio y la experiencia técnica de quien lo limpia. En casos sencillos, puede resolverse en unas horas. En infecciones profundas, con múltiples puertas traseras y afectación a la base de datos, el proceso puede alargarse varios días entre análisis, limpieza, pruebas y refuerzo de seguridad.
¿Cómo evitar que mi WordPress vuelva a ser hackeado?
Para reducir al mínimo el riesgo de nuevos hackeos, mantén todo actualizado, elimina componentes innecesarios, utiliza contraseñas fuertes y autenticación en dos pasos, aplica medidas de hardening, configura copias de seguridad automáticas y monitoriza de forma continua el sitio con un plugin de seguridad y, si es posible, con un firewall a nivel de servidor o CDN.
¿Necesitas asesoramiento legal?
Nuestro equipo de expertos está listo para ayudarte