UA-51298262-10 Skip to main content
Seguridad

Código malicioso en WordPress: detectar y eliminar

By septiembre 23, 2026No Comments
Código malicioso en WordPress: detectar y eliminar

Código malicioso WordPress es una de las amenazas más frecuentes para cualquier sitio. Lo vemos de todo: redirecciones a páginas de spam, inyecciones de backdoors que terminan comprometiendo el servidor entero. Detectarlo a tiempo marca la diferencia entre una limpieza sencilla y perder el proyecto completo. Aquí vas a encontrar cómo identificar los síntomas de una infección, aislar el sitio correctamente y localizar los archivos comprometidos con herramientas y comandos concretos. Y si la limpieza se te queda grande (pasa más de lo que se admite), en RedServicio (redservicio.net) encontrarás ayuda profesional especializada en seguridad WordPress.

Señales de que tu WordPress tiene código malicioso inyectado

El malware en WordPress rara vez se manifiesta de forma evidente al administrador. Su objetivo es justo ese: pasar desapercibido el mayor tiempo posible. Aun así, hay síntomas claros que conviene vigilar:

  • Redirecciones extrañas: los visitantes llegan a dominios de apuestas, farmacias o sitios en japonés. Suele deberse a JavaScript inyectado en el header o a modificaciones en el archivo .htaccess.
  • Spam en Search Console: Google te avisa de páginas indexadas que tú no has creado. O peor, el navegador muestra ese aviso de «Este sitio puede ser peligroso».
  • Caídas de rendimiento repentinas: los scripts que envían spam masivo consumen CPU sin piedad, y la base de datos crece sin que sepas por qué.
  • Usuarios administradores desconocidos: revisa en Usuarios si existen cuentas que no reconoces. Fíjate sobre todo en nombres tipo «admin_temp» o cadenas aleatorias sin sentido.
  • Archivos PHP desconocidos: nombres como wp-conflg.php (con «l» en vez de «i», muy fácil de confundir a simple vista), class.theme-modules.php o archivos PHP metidos en wp-content/uploads son banderas rojas claras.
  • Contenido modificado: enlaces ocultos en el pie de página, textos en japonés, meta etiquetas que nadie ha añadido.

Si detectas varios de estos síntomas a la vez, actúa de inmediato. Cuanto más tiempo permanezca el código malicioso, más profundamente se nidifica en la instalación.

Primeros pasos: aislamiento del sitio y copia de seguridad

Antes de tocar nada, haz dos cosas. En este orden exacto: copia de seguridad primero, aislamiento después. Ojo, la copia no es para restaurar el sitio tal cual (no está limpio), sino para preservar evidencia y no perder datos durante la limpieza.

  1. Copia archivos y base de datos completa: descarga vía FTP/SFTP toda la instalación y exporta la base de datos con phpMyAdmin o mysqldump. Y guárdala fuera del servidor, no al lado.
  2. Activa el modo mantenimiento o cierra el sitio: así evitas que Google marque tu web como peligrosa y que los visitantes se infecten.
  3. Cambia todas las credenciales: contraseñas de administradores, de la base de datos, del FTP, del panel de hosting y las claves sal de wp-config.php (las nuevas puedes generarlas en api.wordpress.org/secret-key). Esto invalida las sesiones y cookies activas del atacante.
  4. Revisa permisos de archivos: carpetas en 755, archivos en 644 y wp-config.php en 600 o 640. Un 777 es, literalmente, una puerta abierta.

Consejo: si tu hosting lo permite, crea un snapshot del servidor completo antes de empezar. Te permitirá revertir cualquier error durante la limpieza sin perder nada por el camino.

Cómo escanear y localizar el código malicioso WordPress

Con el sitio aislado, toca localizar las infecciones. Lo ideal es combinar herramientas automatizadas con revisión manual, porque ningún escáner detecta el 100% del malware. Ninguno.

Escáneres automáticos

  • Wordfence o Sucuri Scanner: desde el propio WordPress comparan los archivos del núcleo con los originales y detectan inyecciones conocidas. Ejecuta un escaneo completo y revisa con calma los archivos marcados como modificados.
  • ClamAV desde consola: en servidores con acceso SSH, ejecuta clamscan -r /ruta/public_html para un análisis desde fuera del entorno comprometido.

Búsqueda manual con comandos SSH

Los patrones típicos de malware PHP son muy reconocibles si sabes dónde mirar. Busca las funciones clásicas de ofuscación:

  • grep -r «eval(base64_decode» /ruta/wp-content/
  • grep -r «eval(gzinflate» /ruta/
  • grep -rl «system\|shell_exec\|passthru» –include=»*.php» /ruta/
  • find /ruta/ -name «*.php» -mtime -7 para localizar archivos PHP modificados en los últimos 7 días.

Presta especial atención a wp-content/uploads (no debería contener ni un solo PHP), a la carpeta wp-includes —los archivos legítimos no suelen cambiar entre actualizaciones— y a las cabeceras de los index.php, que a menudo esconden una línea gigante de código ofuscado. Documenta cada archivo infectado que encuentres. Te servirá tanto para la limpieza como para entender, después, por dónde entró el ataque.

Eliminación manual: archivos infectados, base de datos y backdoors

Ya tienes localizados los archivos comprometidos. Bien. Antes de borrar nada, activa el modo mantenimiento y haz una copia de seguridad del sitio tal como está. Sí, suena raro guardar una versión infectada, pero si la limpieza no fuera completa, ese backup te permitirá analizar cómo entraron y qué tocaron.

El orden que suelo seguir en la eliminación manual es este:

  1. Desactiva temporalmente el sitio. Renombra el directorio de plugins o pon una página de mantenimiento estática. La idea es simple: que ningún visitante pase por el código malicioso mientras trabajas.
  2. Reemplaza el núcleo de WordPress. Descarga una copia limpia de tu versión desde wordpress.org y sobrescribe wp-admin y wp-includes enteros, además de los archivos raíz (index.php, wp-cron.php, wp-load.php…). Y una regla que no admite excepciones: nunca edites un archivo infectado para «arreglarlo». Sustitúyelo por la versión oficial y punto.
  3. Reinstala temas y plugins. Desactiva todos los plugins, elimina el tema activo si está infectado y vuelve a instalarlos desde fuentes oficiales. Los plugins piratas o «nulled» son la principal puerta de entrada de malware en WordPress. Si tienes alguno, fuera. Sin negociación.
  4. Busca backdoors. Los atacantes casi siempre dejan puertas traseras para volver a inyectar el malware tras la limpieza. ¿Dónde se esconden? wp-content/uploads es su favorito (archivos .php disfrazados entre imágenes), también wp-content/mu-plugins —esos plugins obligatorios que se cargan siempre— y funciones dentro de functions.php que no reconozcas. Un backdoor típico tiene esta pinta:

eval(base64_decode(«ZXJyb3JfcmVwb3J0aW5nKDApOw==»)); — cualquier combinación de eval, base64_decode, gzinflate o str_rot13 en archivos que no pertenezcan a un plugin legítimo debe tratarse como sospechosa. Directamente.

Con los archivos limpios, regenera todas las claves y salts del wp-config.php con el generador oficial de WordPress. Y si sospechas que las credenciales de la base de datos quedaron comprometidas, cámbialas también.

Limpieza de la base de datos y usuarios sospechosos

Aquí viene la parte que mucha gente olvida. El código malicioso en WordPress no siempre vive en archivos: buena parte se inyecta en la base de datos y sobrevive a cualquier limpieza de directorios. Los puntos de inyección más habituales:

  • wp_posts: scripts metidos dentro del contenido, sobre todo en entradas antiguas que nadie revisa desde hace años. Busca cadenas como <script, eval( o enlaces spam con consultas SQL directas.
  • wp_options: el campo option_value de widgets y configuraciones activas es un escondrijo clásico. Mira también active_plugins, donde no es raro que añadan rutas a plugins falsos.
  • wp_usermeta: capacidades modificadas para elevar privilegios de cuentas que no deberían existir.

Una consulta típica para rastrear inyecciones en el contenido:

SELECT ID, post_title FROM wp_posts WHERE post_content LIKE ‘%<script%’ OR post_content LIKE ‘%eval(%’;

Después revisa la tabla wp_users y elimina cualquier administrador que no reconozcas. Fíjate bien en los usuarios con nombres genéricos —admin2, wp-support, system— creados con fechas recientes. Aunque antes de borrar, comprueba que no sean cuentas legítimas de colaboradores; ha pasado más de una vez. Ajusta también el rol de tu cuenta principal a algo razonable y usa contraseñas largas generadas con un gestor, no de memoria.

Un detalle que se escapa a casi todos: vacía la caché de tus plugins de optimización y de la CDN al terminar. Si no lo haces, estarás sirviendo durante días la versión en caché del sitio infectado. Todo el trabajo, tirado a la basura.

Cómo restaurar tu WordPress y evitar futuras infecciones: conclusión

Archivos y base de datos limpios. Ahora toca reconstruir el entorno con garantías. Actualiza WordPress, temas y plugins a sus últimas versiones, reinstala solo extensiones de confianza y revisa los permisos: 644 para archivos, 755 para directorios, con wp-config.php bien protegido.

Para blindar el sitio frente a futuras infecciones, estas son las medidas que de verdad marcan la diferencia:

  • Copias de seguridad automáticas diarias almacenadas fuera del servidor.
  • Autenticación en dos factores para todos los usuarios administradores.
  • Firewall de aplicación (WAF) y escaneo de malware, ya sea con un plugin de seguridad o a nivel de servidor.
  • Limitar intentos de login y desactivar la edición de archivos con define(‘DISALLOW_FILE_EDIT’, true); en wp-config.php.
  • Mantener al día PHP y el resto del stack del servidor.

Detectar y eliminar código malicioso en WordPress es un proceso metódico, y no hay atajos: diagnóstico, limpieza de archivos, desinfección de la base de datos y refuerzo del entorno. Cada fase exige su rigor. Si en algún momento sientes que la infección se resiste —o simplemente prefieres no arriesgar tu negocio—, en RedServicio (redservicio.net) encontrarás ayuda profesional para limpiar tu WordPress, eliminar el malware y dejar el sitio protegido contra lo que venga después.