🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Escanear malware en WordPress con WP-CLI

Actualizado el 5 de diciembre de 2025

¿Por qué usar WP-CLI para escanear malware en WordPress?

Si tu web ha sido hackeada o simplemente quieres prevenir problemas, escanear malware en WordPress es una tarea que puede salvar tu negocio. La mayoría de la gente piensa que solo los plugins de seguridad pueden hacer esto, pero existe una herramienta mucho más potente, rápida y gratuita: WP-CLI.

WP-CLI es la interfaz de línea de comandos para WordPress. En lugar de hacer clic en botones dentro del panel de administración, escribes comandos en la terminal de tu servidor. Esto te permite auditar archivos, buscar código malicioso y eliminar malware de forma quirúrgica, sin depender de interfaces lentas o plugins que consumen muchos recursos.

Para los que usan Syspanel (el panel de control que antes se llamaba HestiaCP), el acceso a la terminal es sencillo. Recuerda que el puerto de acceso es el 2106 y desde ahí puedes ejecutar todos los comandos que te mostraré a continuación. No necesitas ser un experto en programación, solo seguir los pasos con calma.


Preparación del entorno: primeros pasos con WP-CLI

Antes de lanzarnos a escanear, debemos asegurarnos de que WP-CLI está instalado y de que tenemos acceso al directorio raíz de WordPress.

Comprobar si WP-CLI está instalado

Escribe este comando en tu terminal:

wp --info

Si ves la versión y la ruta de instalación, estás listo. Si no, instálalo con:

curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp

[!TIP]
Si usas Syspanel, puedes acceder a la terminal desde el botón "Terminal" en el panel. El puerto 2106 te dará acceso SSH directo a tu servidor.

Navegar al directorio de WordPress

Normalmente, tu instalación está en public_html o www. Dentro de Syspanel, la ruta típica es:

cd ~/domains/tudominio.com/public_html

A partir de ahora, ejecutaremos todos los comandos desde esta ubicación.


Escaneo de integridad de archivos: el primer filtro

El primer paso para escanear malware en WordPress es comprobar si algún archivo del núcleo ha sido modificado. Los hackers suelen alterar archivos como wp-login.php o functions.php para inyectar código malicioso.

Verificar la integridad del núcleo

WP-CLI tiene un comando específico para esto:

wp core verify-checksums

Este comando compara todos los archivos de WordPress con los oficiales de wordpress.org. Si encuentra diferencias, las listará.

[!WARNING]
Si ves archivos marcados como "ERROR", no los borres todavía. Primero revisa si son archivos legítimos de tu tema o plugins. Algunos temas modifican wp-settings.php para optimizaciones, lo cual es normal.

Escanear archivos del núcleo en busca de código sospechoso

Para una auditoría más profunda, podemos buscar patrones comunes de malware:

wp core verify-checksums --include-root

Este comando también verifica los archivos en la raíz, como .htaccess o wp-config.php. Estos son objetivos frecuentes de ataques.


Auditoría de plugins y temas: dónde se esconde el malware

Los plugins y temas son la puerta de entrada más común para los hackers. Un plugin desactualizado o con una vulnerabilidad conocida puede ser el vector de ataque.

Listar plugins y temas con sus versiones

wp plugin list --status=active
wp theme list --status=active

Anota las versiones. Si alguna es antigua, es probable que tenga vulnerabilidades conocidas. Actualízalos antes de continuar:

wp plugin update --all
wp theme update --all

Buscar archivos modificados recientemente

El malware suele modificar archivos justo antes o después del ataque. Busca archivos modificados en los últimos 7 días:

find . -type f -mtime -7 -not -path "./wp-content/cache/*" -not -path "./.git/*"

Revisa la lista. Si ves algo como wp-content/uploads/2024/05/backdoor.php, tienes un problema.

[!INFO]
Los archivos en wp-content/uploads no deberían contener archivos PHP. Si encuentras uno, es casi seguro que es malware.


Escaneo de base de datos: el malware invisible

Muchos ataques inyectan código malicioso directamente en la base de datos, especialmente en las tablas wp_posts y wp_options. Esto es más difícil de detectar, pero WP-CLI nos ayuda.

Buscar contenido malicioso en las entradas

wp db query "SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%eval(base64_decode%' OR post_content LIKE '%gzinflate%' OR post_content LIKE '%document.write%';"

Este comando busca patrones típicos de código ofuscado. Si devuelve resultados, esas entradas están comprometidas.

Revisar las opciones de WordPress

wp option list --search='*malware*'
wp option list --search='*hack*'

También revisa si hay usuarios administradores extraños:

wp user list --role=administrator

Si ves un usuario que no reconoces, elimínalo:

wp user delete ID_USUARIO --yes

Escaneo de archivos con firmas de malware

Aunque WP-CLI no incluye un antivirus integrado, podemos usar comandos personalizados para buscar firmas comunes de malware.

Buscar archivos PHP ejecutables en directorios de subida

find wp-content/uploads -name "*.php" -type f

Buscar código ofuscado en todos los archivos PHP

grep -rn "eval(" --include="*.php" . | grep -v "wp-admin" | grep -v "wp-includes"

[!WARNING]
El comando eval() también se usa en algunos plugins legítimos. No elimines nada sin verificar el contexto. Si el archivo está en una carpeta de cache o en un plugin desconocido, es sospechoso.

Buscar redirecciones maliciosas

grep -rn "header(" --include="*.php" . | grep -v "wp-admin" | grep -v "wp-includes"

Si encuentras redirecciones a dominios extraños, tienes un problema grave.


Eliminar malware de WordPress de forma segura

Una vez identificado el malware, hay que eliminarlo. Nunca borres archivos sin antes hacer una copia de seguridad.

Paso 1: Crear una copia de seguridad

wp db export backup.sql
tar -czf backup.tar.gz wp-content wp-config.php .htaccess

Paso 2: Eliminar archivos sospechosos

Si encontraste archivos PHP en wp-content/uploads, elimínalos:

rm wp-content/uploads/2024/05/backdoor.php

Paso 3: Limpiar la base de datos

Si encontraste entradas con código malicioso, puedes vaciarlas o eliminarlas:

wp post delete ID_ENTRADA --force

Paso 4: Restablecer el .htaccess

Si tu .htaccess fue modificado, restablece el predeterminado de WordPress:

wp rewrite flush

[!TIP]
Después de eliminar el malware, cambia todas tus contraseñas: la de administrador, la de FTP y la de la base de datos. También revoca todas las sesiones activas con wp session destroy --all.


Herramientas complementarias para una auditoría completa

WP-CLI es potente, pero combinarlo con otras herramientas te dará una auditoría más profunda.

Instalar el plugin "WP-CLI Security"

wp plugin install wp-cli-security --activate

Este plugin añade comandos como:

wp security scan
wp security audit

Usar VirusTotal desde la terminal

Puedes comprobar archivos sospechosos directamente:

curl -s -F "file=@ruta/al/archivo" https://www.virustotal.com/api/v3/files -H "x-apikey: TU_API_KEY"

[!INFO]
La API de VirusTotal requiere una clave gratuita. Es un servicio muy útil para verificar archivos que no estás seguro de si son malware.


Prevención: cómo evitar futuros ataques

Escanear malware en WordPress es necesario, pero prevenir es mucho mejor. Aquí tienes una lista de acciones que debes realizar periódicamente.

Actualizar todo regularmente

wp core update
wp plugin update --all
wp theme update --all

Limitar los intentos de inicio de sesión

Instala un plugin de seguridad o configura el servidor para limitar los intentos de acceso. Con WP-CLI:

wp option update limit_login_attempts 5

Desactivar la edición de archivos desde el panel

Añade esta línea a wp-config.php:

define('DISALLOW_FILE_EDIT', true);

Programar escaneos automáticos

Crea un cron que ejecute los comandos de verificación cada semana:

crontab -e

Añade esta línea:

0 3 * * 0 cd ~/domains/tudominio.com/public_html && wp core verify-checksums > /dev/null 2>&1

Preguntas frecuentes (FAQ)

¿Puedo usar WP-CLI en cualquier hosting?

Sí, siempre que tengas acceso SSH. En Syspanel, el acceso se realiza a través del puerto 2106. Si tu hosting no ofrece SSH, tendrás que usar plugins de seguridad.

¿Es seguro ejecutar estos comandos sin experiencia?

La mayoría son de solo lectura y no modifican nada. Los comandos de eliminación los debes ejecutar solo cuando estés 100% seguro de que es malware. Siempre haz una copia de seguridad antes.

¿Qué hago si WP-CLI no está instalado en mi servidor?

Puedes instalarlo manualmente siguiendo las instrucciones oficiales. En Syspanel, también puedes pedir soporte técnico para que lo instalen.

¿WP-CLI reemplaza a los plugins de seguridad?

No. Los plugins ofrecen protección en tiempo real, cortafuegos y monitorización continua. WP-CLI es una herramienta complementaria para auditorías profundas y eliminación manual de malware.

¿Cómo sé si mi sitio ha sido hackeado si no tengo síntomas?

Los síntomas más comunes son: redirecciones extrañas, aparición de anuncios, ralentización del sitio, usuarios nuevos no autorizados o archivos desconocidos. Ejecuta los comandos de escaneo de este artículo para verificarlo.


Conclusión: la auditoría regular es tu mejor defensa

Escanear malware en WordPress con WP-CLI no es complicado si sigues los pasos correctos. La clave está en la constancia: realiza auditorías mensuales, mantén todo actualizado y verifica la integridad de tus archivos.

Con Syspanel y el acceso al puerto 2106, tienes todo lo necesario para mantener tu sitio limpio y seguro. No esperes a que sea tarde: ejecuta tu primera auditoría hoy mismo.

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel