WP-CLI ayuda cuando el escritorio no está disponible, pero normalmente carga código de WordPress. En una instalación comprometida, inicializar plugins o temas maliciosos puede ejecutar PHP del atacante con los permisos del usuario del comando.
Úsalo con acceso shell autorizado, instantáneas y un propósito concreto.
Confirma ruta y usuario del sistema
Ejecuta desde la raíz documental correcta y como propietario de la web, no como una cuenta de servidor sin límites. Verifica URL canónica, wp-config.php, base y prefijo.
En servidores con varias webs, un --path incorrecto puede modificar otra instalación. Registra directorio de trabajo y salida relevante en la cronología. No escribas credenciales directamente en el historial.
Conserva antes de modificar
Captura archivos y base, y copia registros de acceso, PHP, correo y auditoría. Anota usuarios, plugins, temas y eventos programados antes de actualizar o borrar.
La salida de WP-CLI puede servir como evidencia, pero no vuelques opciones completas, usuarios o pedidos en un ticket. Censura identificadores y datos personales. Empieza por comandos de lectura.
Reduce el riesgo al cargar WordPress
Cuando sea apropiado, utiliza --skip-plugins y --skip-themes para evitar extensiones sospechosas. Los mu-plugins pueden seguir cargándose.
wp --skip-plugins --skip-themes core version
wp --skip-plugins --skip-themes user list --fields=ID,user_login,roles
Estas opciones reducen exposición, pero no demuestran que el entorno sea seguro.
Comprueba la integridad del núcleo
Utiliza los metadatos de la versión oficial correspondiente:
wp core verify-checksums --include-root
Revisa cada diferencia. Archivos propios en la raíz, herramientas del hosting o una versión mal identificada pueden generar alertas legítimas. Los checksums no examinan uploads, temas propios, inyecciones en la base ni cuentas robadas.
Inventaría plugins y temas
Lista nombres, estado y versiones sin activar componentes. Compara paquetes mantenidos con fuentes fiables y comprueba si queda código abandonado.
El soporte de checksum varía, sobre todo en extensiones comerciales o propias. Reemplaza paquetes dudosos desde descargas verificadas en vez de editar solo líneas visibles. Registra licencia y responsable sin exponer claves.
Revisa usuarios y tareas
Lista administradores, roles, metadatos de contraseñas de aplicación y cron cuando estén disponibles. Conserva IDs y hooks desconocidos antes de deshabilitarlos.
No borres todos los eventos: WooCommerce y las copias dependen de tareas legítimas. Un hook desconocido requiere análisis de su origen. Usa IDs exactos para restablecimientos aprobados y revoca sesiones después.
Exporta de forma limitada
Exporta la base con WP-CLI solo si usuario y destino son fiables. Guarda fuera del webroot, limita permisos y retira copias según el plan de conservación.
Los comandos que evalúan opciones arbitrarias, llaman callbacks o ejecutan eval pueden activar código comprometido. Prefiere lecturas estructuradas e inspección offline. No envíes contenido desconocido a un shell ni a servicios públicos.
Controla multisitio y ejecución remota
En multisitio, especifica la URL prevista y documenta si la acción afecta a toda la red. Evita servicios remotos opacos hasta verificar cuenta, token y auditoría. Revoca credenciales antiguas de gestión.
Mantén historial libre de secretos y datos de clientes.
Evita búsquedas y sustituciones inseguras
search-replace sirve para migraciones planificadas, no como limpiador genérico. Payloads ofuscados, valores serializados y contenido legítimo pueden dañarse.
Exporta, identifica registros exactos y aplica cambios precisos y revisables. Nunca ejecutes una sustitución amplia sobre la única copia. Mantén los datos infectados fuera de producción.
Reconoce cuándo no usar WP-CLI
No cargues WordPress si desconoces la propiedad de archivos, investigas la ejecución PHP o el shell puede estar comprometido. Haz análisis offline y reconstrucción limpia.
Tras recuperar, prueba por HTTP login, formularios, checkout, cron y correo; un comando correcto no demuestra el recorrido del usuario. Si la salida cambia sin explicación o varias webs comparten usuario, solicita ayuda y comparte solo comandos y resultados censurados.