Introduccion: Tu WordPress ha sido hackeado - que hacer ahora
Descubrir que tu sitio WordPress ha sido hackeado es una de las experiencias más estresantes para cualquier propietario de sitio web. Pero no entres en panico. Con el proceso correcto, puedes limpiar tu sitio, eliminar todo el malware y fortalecerlo contra futuros ataques.
Descubre más sobre servicios de auditoria de seguridad WordPress en WPPoland.
En esta guía completa, te llevo paso a paso a través del proceso profesional que uso para limpiar sitios WordPress infectados. Usaremos herramientas de linea de comandos (SSH, WP-CLI) porque son más rápidas y completas que cualquier plugin, aunque también cubriré alternativas con interfaz grafica.
Signos de que tu WordPress esta hackeado
Antes de empezar a limpiar, confirma que tu sitio realmente esta comprometido. Los signos más comunes incluyen:
- Redirecciones no deseadas: Los visitantes son redirigidos a sitios de spam, farmacia o casinos
- Contenido spam inyectado: Páginas con texto en japones, chino o enlaces a sitios maliciosos
- Usuarios administradores desconocidos: Nuevas cuentas de administrador que tu no creaste
- Archivos modificados recientemente: Archivos del core, temas o plugins cambiados sin tu conocimiento
- Advertencias del navegador: Chrome o Firefox muestran “Este sitio puede danar tu equipo”
- Caida de tráfico SEO: Google ha penalizado o desindexado tu sitio
- Correos spam enviados: Tu servidor esta enviando correos no deseados
- Rendimiento degradado: El sitio se ha vuelto notablemente más lento
Paso 1: Hacer backup antes de tocar nada
Antes de hacer cualquier cambio, crea un backup completo del estado infectado. Esto es crucial por dos razones: (1) si algo sale mal durante la limpieza, puedes restaurar, y (2) puedes analizar el malware despues para entender como ocurrio la brecha.
# Crear backup completo de archivos
tar -czf /tmp/backup-infectado-$(date +%Y%m%d).tar.gz /var/www/html/
# Exportar base de datos
wp db export /tmp/backup-db-infectado-$(date +%Y%m%d).sql --path=/var/www/html/
Paso 2: Diagnostico - Encontrar el malware
Escaneo de archivos sospechosos
Usa grep para buscar patrones comunes de malware en tus archivos:
# Buscar funciones de ofuscacion comunes
grep -rn "eval(" /var/www/html/wp-content/ --include="*.php"
grep -rn "base64_decode" /var/www/html/wp-content/ --include="*.php"
grep -rn "str_rot13" /var/www/html/wp-content/ --include="*.php"
grep -rn "gzinflate" /var/www/html/wp-content/ --include="*.php"
# Buscar archivos PHP en uploads (NO deberia haber ninguno)
find /var/www/html/wp-content/uploads/ -name "*.php" -type f
# Buscar archivos modificados en los ultimos 7 dias
find /var/www/html/ -name "*.php" -mtime -7 -type f
Verificar usuarios de la base de datos
-- Buscar administradores sospechosos
SELECT ID, user_login, user_email, user_registered
FROM wp_users
WHERE ID IN (
SELECT user_id FROM wp_usermeta
WHERE meta_key = 'wp_capabilities'
AND meta_value LIKE '%administrator%'
);
Tipos comunes de hackeo en 2026
| Tipo | Sintomás | Donde buscar |
|---|---|---|
| Japanese Keyword Hack | Miles de páginas spam en japones indexadas | wp_posts, sitemap.xml |
| Pharma Hack | Enlaces a sitios de farmacias en el contenido | wp_posts, wp_options |
| Backdoor PHP | Archivos PHP ocultos para acceso remoto | wp-content/uploads/, temas |
| Redirecciones maliciosas | Visitantes redirigidos a otros sitios | .htaccess, wp-config.php, wp_options |
| Cryptominer | Alto uso de CPU, sitio lento | Archivos JS inyectados, wp-includes/ |
| Skimmer de tarjetas | Robo de datos de pago en checkout | JS en temas/plugins de WooCommerce |
Paso 3: Reemplazar el core de WordPress
El método más seguro es reemplazar todos los archivos del core con versiones limpias:
# Descargar core limpio sin tocar wp-content
wp core download --force --skip-content --path=/var/www/html/
# Verificar la integridad
wp core verify-checksums --path=/var/www/html/
Esto reemplaza wp-admin/, wp-includes/ y todos los archivos del core raiz con versiones originales, eliminando cualquier modificacion maliciosa.
Paso 4: Limpiar wp-content
Plugins
La forma más segura es eliminar y reinstalar todos los plugins:
# Listar plugins activos
wp plugin list --status=active --path=/var/www/html/
# Reinstalar cada plugin desde el repositorio
wp plugin install nombre-del-plugin --force --path=/var/www/html/
Para plugins premium, descarga versiones frescas del proveedor original.
Temas
Elimina todos los temas excepto el activo. Para el tema activo, compara archivos con la versión original linea por linea.
Uploads
La carpeta uploads NUNCA deberia contener archivos PHP. Elimina cualquiera que encuentres:
find /var/www/html/wp-content/uploads/ -name "*.php" -delete
find /var/www/html/wp-content/uploads/ -name "*.phtml" -delete
find /var/www/html/wp-content/uploads/ -name ".htaccess" -delete
Paso 5: Limpiar la base de datos
Eliminar administradores falsos
-- Eliminar usuarios sospechosos (verifica IDs primero)
DELETE FROM wp_users WHERE ID IN (lista_de_ids_sospechosos);
DELETE FROM wp_usermeta WHERE user_id IN (lista_de_ids_sospechosos);
Buscar contenido inyectado
-- Buscar scripts inyectados en posts
SELECT ID, post_title
FROM wp_posts
WHERE post_content LIKE '%<script%'
AND post_content LIKE '%eval(%';
-- Buscar opciones sospechosas
SELECT option_name, option_value
FROM wp_options
WHERE option_name LIKE '%hack%'
OR option_name LIKE '%inject%'
OR option_value LIKE '%base64_decode%';
Paso 6: Endurecer la configuración
Despues de la limpieza, fortalece tu sitio contra futuros ataques:
Cambiar todas las credenciales
# Cambiar contrasena de administrador
wp user update admin --user_pass="nueva-contrasena-segura" --path=/var/www/html/
# Regenerar Salt Keys (cierra todas las sesiones activas)
wp config shuffle-salts --path=/var/www/html/
Agregar protecciónes en wp-config.php
// Deshabilitar edicion de archivos desde el admin
define('DISALLOW_FILE_EDIT', true);
// Deshabilitar instalacion de plugins/temas desde el admin
define('DISALLOW_FILE_MODS', true);
// Forzar SSL en admin
define('FORCE_SSL_ADMIN', true);
Configurar permisos de archivos
# Directorios: 755
find /var/www/html/ -type d -exec chmod 755 {} \;
# Archivos: 644
find /var/www/html/ -type f -exec chmod 644 {} \;
# wp-config.php: 400 (solo lectura)
chmod 400 /var/www/html/wp-config.php
Paso 7: Verificar y monitorear
Lista de verificación post-limpieza
- Core de WordPress verificado con checksums
- Todos los plugins reinstalados desde fuentes limpias
- Archivos PHP eliminados de uploads
- Usuarios administradores falsos eliminados
- Contrasenas cambiadas para todos los usuarios
- Salt Keys regeneradas
- Permisos de archivos corregidos
- DISALLOW_FILE_EDIT habilitado
- XML-RPC deshabilitado si no se necesita
- Plugin de seguridad instalado (Wordfence, Sucuri)
- Backups automáticos configurados
Solicitar revision a Google
Si Google marco tu sitio como peligroso:
- Ve a Google Search Console
- Navega a Seguridad y acciones manuales
- Solicita una revision despues de la limpieza
- Espera 24-72 horas para la reevaluación
Prevencion: Evitar futuros hackeos
La mejor defensa es la prevencion:
- Actualiza siempre: Core, plugins y temas - automáticamente si es posible
- Usa contrasenas fuertes: Minimo 16 caracteres, únicas para cada cuenta
- Implementa 2FA: Autenticación de dos factores para todas las cuentas admin
- Hosting seguro: VPS con firewall, no hosting compartido
- Backups diarios: Automatizados y almacenados offsite
- Monitoreo continuo: Alertas de cambios de archivos y actividad sospechosa
Explora nuestros servicios de auditoria de seguridad WordPress y mantenimiento WordPress para proteger tu sitio profesionalmente.



