Eliminar inyecciones de código en WordPress hackeado
Aprende a eliminar inyecciones de código wordpress, cortar la reinfección y reforzar tu web con pasos claros y seguros.
Cuando necesitas eliminar inyecciones de código wordpress, lo más importante no es borrar lo primero que parece sospechoso, sino seguir un orden correcto: contener el incidente, guardar una copia completa, localizar el alcance real de la infección, limpiar con criterio y cerrar la vía de entrada para evitar la reinfección.
Una inyección de código en WordPress es la inserción no autorizada de fragmentos maliciosos en archivos, base de datos o configuraciones del sitio. Puede usarse para redirecciones, spam SEO, creación de usuarios falsos, robo de credenciales, consumo anómalo de recursos o instalación de puertas traseras que permitan volver a entrar más adelante.
Si tienes un wordpress hackeado, conviene actuar con calma y método. Limpiar sin entender dónde está el código alterado o cómo entró el atacante puede dejar restos activos o romper partes legítimas de la web.
Qué significa una inyección de código en un WordPress hackeado
No todas las infecciones son iguales. En algunos casos el atacante modifica archivos del servidor, por ejemplo el núcleo de WordPress, un plugin, un tema, wp-config.php, .htaccess o scripts dentro de uploads. En otros, el código malicioso se guarda en la base de datos: opciones, widgets, contenido, bloques HTML, usuarios o tareas programadas.
La diferencia es importante porque una limpieza parcial puede dejar activo el problema. Puedes restaurar archivos limpios y seguir teniendo una redirección porque el payload sigue en una opción de la base de datos, o limpiar entradas contaminadas y no detectar una puerta trasera escondida en un archivo PHP con nombre aparentemente normal.
Los vectores de entrada más habituales suelen ser plugins vulnerables, temas desactualizados, contraseñas débiles, credenciales filtradas, accesos de administrador comprometidos, permisos inseguros o malware persistente que reaparece tras una limpieza incompleta.
Señales de que puede haber código malicioso inyectado
Estas son algunas pistas habituales que conviene revisar antes de intervenir:
- Redirecciones a dominios ajenos, sobre todo desde móviles o tráfico orgánico.
- Páginas de spam SEO indexadas que no has creado.
- Usuarios administradores desconocidos o cambios de permisos inexplicables.
- Archivos PHP dentro de uploads o nombres extraños en directorios poco habituales.
- Alertas del hosting, del navegador o de herramientas de seguridad.
- Consumo de CPU, disco o procesos muy por encima de lo normal.
- Cambios no autorizados en cabeceras, pie de página, widgets o snippets de seguimiento.
- Emails salientes sospechosos, formularios manipulados o creación masiva de contenido no deseado.
Ninguna señal por sí sola confirma el alcance real del incidente, pero varias juntas justifican una revisión profunda para detectar malware en WordPress con criterio técnico.
Qué hacer antes de limpiar el sitio para no empeorar el problema
Antes de tocar archivos o base de datos, conviene preparar la intervención. Este paso reduce errores y ayuda a investigar la causa.
- Activa modo mantenimiento si procede. Si el sitio está sirviendo malware, redirecciones o contenido fraudulento, puede ser necesario limitar el acceso público mientras se trabaja.
- Haz una copia completa antes de limpiar. Incluye archivos, base de datos y, si el proveedor lo permite, logs relevantes. Esa copia puede servir como respaldo forense o para comparar cambios.
- Documenta síntomas y fechas. Anota cuándo empezó el problema, qué se ha cambiado y qué plugins o temas se actualizaron antes del incidente.
- Comprueba accesos disponibles. FTP, SFTP, SSH, panel de hosting, phpMyAdmin y acceso al administrador de WordPress, si todavía funciona.
- Evita borrar a ciegas. Eliminar archivos al azar puede ocultar evidencia, romper la web o dejar una puerta trasera activa en otra ruta.
Checklist rápida antes de intervenir
- Copia de archivos y base de datos realizada
- Accesos al hosting y a la base de datos verificados
- Sitio en mantenimiento si hay riesgo para visitantes
- Registro de síntomas, fechas y cambios recientes
- Decisión clara sobre si vas a limpiar manualmente o restaurar una copia limpia
Cómo localizar inyecciones de código en archivos, plugins, temas y base de datos
Revisión de archivos del núcleo y configuración
Empieza por revisar la integridad del núcleo de WordPress. Si se dispone de una copia oficial limpia de la misma versión, conviene comparar archivos para detectar alteraciones. En muchos casos puede ser más fiable reinstalar el núcleo limpio que intentar editar archivos uno por uno, siempre preservando wp-config.php y el contenido legítimo de wp-content.
Revisa con especial atención:
- wp-config.php por inclusiones extrañas, código ofuscado, llamadas remotas o cambios no reconocidos.
- .htaccess por redirecciones, reglas anómalas o bloqueos no autorizados.
- Archivos PHP recientes en carpetas donde no deberían existir, especialmente en uploads.
- Directorios de mu-plugins o drop-ins, porque cargan código de forma automática.
Plugins y temas
Los plugins y temas son un vector frecuente. Si un componente parece alterado o está abandonado, conviene compararlo con una versión oficial limpia o reemplazarlo por una copia fiable. Si el plugin o tema no es imprescindible, puede ser recomendable retirarlo tras documentar el incidente.
Busca archivos nuevos con nombres engañosos, funciones de ejecución dinámica, código ofuscado o cargas remotas no justificadas. No todo código complejo es malicioso, así que el contexto importa.
Base de datos
La base de datos puede contener inyecciones en opciones del sitio, contenido de entradas, widgets, bloques personalizados, tablas de plugins o usuarios. Aquí es habitual encontrar spam SEO, scripts incrustados, iframes, enlaces ocultos o cargas persistentes que reescriben partes del sitio.
Conviene revisar, según el caso:
- Opciones sospechosas en tablas de opciones, sobre todo valores autoload anómalos.
- Entradas, páginas y borradores con bloques o scripts que no reconoces.
- Usuarios con rol administrador creados sin autorización.
- Tareas programadas o configuraciones guardadas por plugins que ya no deberían existir.
Cron, sesiones y accesos
Además de los archivos visibles, conviene revisar tareas programadas de WordPress, sesiones activas, claves de acceso, integraciones API y logs del servidor si se dispone de ellos. Un atacante puede dejar mecanismos de persistencia que no saltan a la vista en una revisión superficial.
Cómo eliminar inyecciones de código WordPress paso a paso
La limpieza real depende del nivel de acceso, de si existe una copia fiable anterior al incidente y del alcance de la infección. Aun así, esta secuencia suele ser la más prudente.
- Aísla el problema. Si el sitio está sirviendo contenido malicioso, mantén el acceso restringido mientras trabajas.
- Haz o conserva una copia previa. No limpies sin respaldo de archivos y base de datos.
- Reinstala el núcleo limpio cuando proceda. Sustituir archivos core por versiones oficiales de la misma rama puede ayudar a eliminar alteraciones en el núcleo.
- Sustituye plugins y temas por copias limpias. Descarga versiones fiables, elimina las alteradas y conserva solo aquello que sea necesario y actualizado.
- Revisa y limpia archivos críticos. Comprueba wp-config.php, .htaccess, mu-plugins y cualquier PHP en uploads o rutas no habituales.
- Limpia la base de datos. Elimina scripts inyectados, spam SEO, opciones persistentes sospechosas y usuarios no autorizados. Hazlo con mucha cautela para no borrar contenido legítimo.
- Desactiva o elimina componentes vulnerables. Si un plugin o tema fue la vía de entrada probable, no basta con limpiarlo; conviene actualizarlo, sustituirlo o prescindir de él.
- Cambia todas las credenciales relevantes. Usuarios de WordPress, hosting, SFTP/FTP, base de datos, panel de control y cuentas relacionadas. También conviene renovar salts y forzar cierre de sesiones según el caso.
- Verifica que no hay reinfección inmediata. Si reaparecen archivos o usuarios poco después de limpiar, es probable que quede una puerta trasera o el vector de acceso siga abierto.
En algunas situaciones, desinfectar WordPress manualmente no basta. Si persisten redirecciones, reaparecen archivos alterados o no puedes determinar el punto de entrada, puede ser necesario hacer una revisión más profunda del entorno o partir de una restauración limpia cuidadosamente validada.
Qué revisar después de la limpieza para cerrar accesos y reforzar la seguridad
Eliminar el código malicioso visible es solo una parte del trabajo. Después conviene confirmar que no queda persistencia y que el vector de entrada está controlado.
- Revisa usuarios administradores, roles y permisos.
- Comprueba que no haya tareas cron sospechosas ni automatizaciones extrañas.
- Valida permisos de archivos y carpetas de forma coherente con el hosting.
- Asegúrate de que plugins, temas y núcleo estén actualizados.
- Confirma que no existan backdoors, cargadores remotos o ficheros reintroducidos.
- Comprueba Search Console, indexación y posibles alertas de seguridad o spam, si usas esas herramientas.
Si el sitio ha sufrido impacto visible, como desindexación, páginas de spam o bloqueo por navegación segura, la recuperación puede requerir tiempo incluso después de eliminar código malicioso. Lo prioritario sigue siendo asegurar la limpieza técnica y la causa de fondo mediante una auditoría de seguridad WordPress y refuerzo.
Errores frecuentes que conviene evitar
- Borrar archivos sin copia previa.
- Confiar solo en un plugin de escaneo para dar el incidente por cerrado.
- No cambiar contraseñas ni cerrar sesiones activas.
- No revisar la base de datos ni los usuarios.
- Limpiar síntomas sin investigar el vector de entrada.
Cómo proteger WordPress para reducir el riesgo de reinfección
La fase de hardening WordPress busca reducir superficie de ataque y detectar problemas antes. No elimina todo riesgo, pero sí mejora mucho la postura de seguridad.
- Mantén WordPress, plugins y temas actualizados.
- Elimina componentes que no uses y evita software abandonado.
- Usa contraseñas robustas y, si es viable, autenticación adicional.
- Limita el número de administradores y revisa accesos periódicamente.
- Configura copias de seguridad verificadas y restaurables.
- Revisa permisos de archivos y deshabilita prácticas inseguras según permita el entorno.
- Monitoriza cambios, logs y comportamiento anómalo del servidor o del sitio.
Si administras una web de negocio, conviene tratar la seguridad WordPress como un proceso continuo. Actualizar, revisar accesos y validar copias limpias suele ser más rentable que reaccionar tarde ante una nueva infección.
La documentación oficial de WordPress mantiene recomendaciones generales de seguridad en su guía Hardening WordPress, útil como referencia base para revisar medidas de endurecimiento.
Conclusión
Para limpiar una web infectada con criterio, el orden importa: copia previa, contención, localización del código alterado, limpieza de archivos y base de datos, cambio de credenciales y revisión del vector de entrada. Si algo reaparece, lo más probable es que siga existiendo una puerta trasera, una tarea persistente o un acceso comprometido que no se ha cerrado.
Si tienes dudas sobre el alcance del incidente, no dispones de una copia limpia o la infección afecta a redirecciones, spam SEO o reinfecciones, puede ser razonable pedir una revisión profesional. En escenarios complejos, una segunda validación técnica ayuda a proteger WordPress con más seguridad y a reducir el riesgo de repetir el problema.
Fuentes
- Documentación oficial de WordPress: Hardening WordPress.
¿Necesitas orientación personalizada?
Te ayudamos a entender tus opciones y el siguiente paso.