Cuando una instalación de WordPress ha sido comprometida, cada minuto cuenta. Los atacantes no solo pueden modificar archivos del core, sino también insertar puertas traseras, crear usuarios ocultos, alterar la base de datos y dejar persistencia para volver a entrar más tarde.
En ese escenario, WP-CLI se convierte en una herramienta especialmente útil porque permite actuar rápido, con precisión y sin depender del entorno gráfico. Si ya has trabajado con comandos básicos, en esta guía iremos un paso más allá: cómo usar WP-CLI para limpiar una web hackeada, reducir riesgos y dejarla preparada para una revisión más profunda.
Este artículo parte de una idea importante: limpiar no siempre significa “volver a instalar todo” de inmediato. A veces conviene primero aislar el alcance del incidente, identificar vectores de entrada y eliminar el malware con método. Si aún no dominas los fundamentos de la consola, puedes revisar antes Primeros pasos con WP-CLI: comandos básicos explicados y Cómo usar WP-CLI en scripts bash.
Antes de tocar nada: contención y copia forense
La primera regla ante una intrusión es no empeorar la situación. Si el sitio sigue online, lo más prudente es ponerlo en mantenimiento o restringir el acceso temporalmente. Después, crea una copia de la base de datos y del sistema de archivos antes de limpiar nada.
Ese respaldo no debe pensarse como “la copia buena”, sino como evidencia. Puede servir para comparar cambios, rastrear inyecciones y documentar qué se alteró. Si necesitas un flujo ordenado de backup, enlaza con Cómo hacer un backup de WordPress con WP-CLI y Cómo exportar e importar la base de datos con WP-CLI.
Comandos útiles para congelar el estado
# Exporta una copia de la base de datos antes de intervenir
wp db export respaldo-incidente.sql
# Lista plugins y temas para documentar el estado actual
wp plugin list
wp theme list
# Revisa usuarios existentes
wp user list
Estos comandos no limpian por sí solos, pero te ayudan a construir una línea base. En incidentes reales, registrar el estado inicial ahorra tiempo cuando hay que decidir qué borrar, qué reinstalar y qué revisar manualmente.
Buscar señales comunes de compromiso
Un hackeo en WordPress suele dejar rastros reconocibles: archivos PHP en directorios de imágenes, plugins desconocidos, usuarios administradores sin explicación, tareas programadas extrañas o contenido inyectado en entradas y opciones del sitio.
Con WP-CLI puedes inspeccionar varios frentes sin abrir el panel. El objetivo es detectar anomalías, no confiar en “parece normal”. Una instalación comprometida puede verse funcional y, aun así, estar sirviendo código malicioso en segundo plano.
Revisar usuarios, plugins y temas
# Busca cuentas con privilegios elevados
wp user list --role=administrator
# Identifica plugins no esperados
wp plugin list --status=active
# Comprueba la lista de temas instalados
wp theme list
Si encuentras usuarios que no reconoces, elimínalos con cuidado solo después de asegurar que no formen parte de la recuperación legítima. Para profundizar en este punto, te puede servir Cómo crear y gestionar usuarios con WP-CLI.
También conviene revisar si hay plugins vulnerables o desactualizados que hayan servido como vector de entrada. Si quieres reforzar ese proceso, consulta Cómo detectar plugins vulnerables con WP-CLI y Cómo mejorar la seguridad de WordPress con WP-CLI.
Reinstalar el core de wordpress para devolver integridad
Una de las medidas más eficaces en una limpieza es reinstalar los archivos del core. Si el atacante modificó el núcleo, esta acción restaura los binarios oficiales sin tocar la base de datos ni el contenido.
Esta técnica es especialmente útil porque los ataques suelen combinan persistencia en archivos y base de datos. Reinstalar el core no resuelve todo, pero sí elimina una gran parte del riesgo si el compromiso estaba localizado en ficheros del sistema.
Reinstalación segura del core
# Reinstala los archivos principales de WordPress
wp core download --force
# Verifica integridad del core si el entorno lo permite
wp core verify-checksums
El comando verify-checksums es muy valioso para detectar archivos alterados. Si aparecen diferencias, no las ignores: pueden revelar backdoors, shells o modificaciones maliciosas. En caso de despliegues o procesos repetidos, también vale la pena revisar Comandos avanzados de WP-CLI que debes conocer.
Limpiar archivos sospechosos con criterio
No todo archivo “raro” es malware, pero en una instalación hackeada hay patrones muy frecuentes. Busca scripts PHP en carpetas donde no deberían existir, archivos con fechas de modificación extrañas, nombres aleatorios o contenido ofuscado con funciones como base64_decode, eval o cadenas largas aparentemente sin sentido.
WP-CLI no es un antivirus, así que aquí combina consola con revisión manual. El valor del CLI está en ayudarte a inventariar, localizar y automatizar búsquedas de forma mucho más rápida que navegando carpeta por carpeta.
Controlar archivos y patrones sospechosos
# Lista archivos recientes en el directorio actual
find . -type f -mtime -7
# Busca funciones típicas de ofuscación en el código PHP
grep -RIn --include="*.php" "base64_decode\|eval\|gzinflate" .
# Detecta cambios respecto a los checksums del core
wp core verify-checksums
Si encuentras archivos maliciosos en directorios de subida, estatica o cache, elimina primero la copia local y documenta la ruta. En casos complejos, puede ser necesario revisar también permisos y propietarios de archivos, algo que ya se relaciona con Problemas de permisos con WP-CLI en Linux.
Limpiar la base de datos: usuarios ocultos, inyecciones y opciones maliciosas
Muchos ataques a WordPress no se limitan a archivos. También alteran la base de datos para insertar scripts, redirecciones, contenido spam o claves que permiten reinfectar el sitio tras una limpieza superficial.
Con WP-CLI puedes inspeccionar contenido y opciones sin depender del administrador web. Esto es clave cuando el panel está comprometido, inaccesible o alterado por el atacante.
Revisar contenido y opciones sensibles
# Busca una cadena sospechosa en opciones y contenido
wp db search "base64_decode"
# Revisa entradas sospechosas en la tabla de opciones
wp option list --search="%" --format=table
# Exporta la base de datos para análisis externo
wp db export copia-analisis.sql
Si el ataque dejó contenido inyectado en entradas, widgets o ajustes del tema, puede ser útil combinar wp db search con consultas más específicas. En escenarios de migración o restauración, la guía de Cómo buscar y reemplazar URLs en WordPress con WP-CLI también ayuda a entender cómo operan los cambios masivos en la base de datos.
Un detalle importante: eliminar cadenas sospechosas sin entender su propósito puede romper el sitio. Siempre valida qué hace cada cambio antes de ejecutar reemplazos en producción.
Restablecer credenciales y cerrar la puerta de entrada
Una limpieza real no termina al borrar malware. Hay que asumir que las credenciales pudieron quedar expuestas. Cambia contraseñas de administradores, revisa claves de la base de datos, regenera secretos de autenticación y elimina cuentas que no formen parte del equipo.
Este paso es crucial porque muchos atacantes mantienen acceso mediante usuarios ocultos o tokens reutilizables. Si solo limpias archivos, pero no cambias accesos, la reinfección suele ser cuestión de tiempo.
Acciones recomendadas después de la limpieza
# Lista usuarios administradores
wp user list --role=administrator
# Elimina un usuario sospechoso por ID
wp user delete 12 --reassign=1
# Cambia la contraseña de un usuario administrador
wp user update 1 --user_pass="NuevaClaveMuyFuerte"
Después de esto, revisa plugins y temas, elimina los que no uses y actualiza todo lo que quede activo. Si necesitas una estrategia de endurecimiento posterior, consulta tanto Cómo forzar actualizaciones automáticas con WP-CLI como Cómo auditar una instalación de WordPress desde consola.
Verificación final y restauración progresiva
Una vez limpiado el sitio, no des por hecho que ya está listo. Haz una verificación funcional: inicio de sesión, carga de páginas críticas, formularios, enlaces permanentes, tareas programadas y logs del servidor. La limpieza técnica debe ir acompañada de una observación durante varios días.
Si dispones de un backup previo al incidente y detectas corrupción extendida, a veces la opción más segura es restaurar desde una copia íntegra y luego aplicar hardening. En despliegues más grandes, incluso puedes automatizar parte del proceso con Despliegues automáticos de WordPress con WP-CLI o revisar casos de Cómo migrar un WordPress completo usando WP-CLI.
En resumen, WP-CLI no sustituye a una investigación de seguridad, pero sí acelera enormemente el trabajo de contención, diagnóstico y recuperación. Usado con método, te permite limpiar instalaciones hackeadas con más control y menos fricción que el panel tradicional.
Fuentes y lecturas recomendadas
Documentación oficial de WP-CLI

Deja una respuesta