Como identificar que WordPress fue comprometido
Un sitio WordPress hackeado puede mostrar diferentes sintomas dependiendo del tipo y objetivo del ataque. Es fundamental identificar el compromiso lo antes posible para limitar el dano y evitar que el sitio sea usado para distribuir malware o spam, lo que puede resultar en la inclusion del dominio en listas negras de seguridad y la suspencion del servicio de hospedaje.
Señales de que un sitio WordPress pudo haber sido comprometido:
- El navegador o Google muestra una advertencia de "Sitio engañoso" o "Sitio malicioso".
- El proveedor de hospedaje suspendio la cuenta por actividad maliciosa.
- Aparecen paginas, publicaciones o usuarios administradores desconocidos.
- El sitio redirige automaticamente a otros dominios desconocidos.
- Google Search Console reporta URLs de spam indexadas en el dominio.
- El sitio carga muy lento o muestra contenido que no fue publicado por el administrador.
Proceso de limpieza paso a paso
Paso 1: Poner el sitio en mantenimiento y respaldar
Aunque el sitio este comprometido, realizar un respaldo del estado actual es importante para tener una referencia de los archivos modificados. No restaurar este respaldo como solucion, sino usarlo para comparacion.
Paso 2: Escanear con herramientas de seguridad
Ejecutar un escaneo completo del sitio para identificar archivos maliciosos:
- Instalar y ejecutar Wordfence Security y realizar un escaneo completo.
- Usar la herramienta de escaneo remoto de Sucuri SiteCheck (sitecheck.sucuri.net).
- Revisar el reporte de Google Search Console > Seguridad para ver que paginas fueron marcadas.
Paso 3: Restaurar los archivos del nucleo de WordPress
Descargar una copia fresca de WordPress de la misma version instalada y reemplazar todos los archivos del nucleo excepto /wp-content/ y wp-config.php. Los archivos del nucleo nunca deben ser modificados manualmente en un sitio limpio.
Paso 4: Revisar y limpiar wp-content
Los atacantes frecuentemente ocultan archivos PHP maliciosos dentro de carpetas de uploads:
# Buscar archivos PHP en la carpeta de uploads (via SSH si esta disponible) find wp-content/uploads -name "*.php"
Eliminar todos los archivos PHP encontrados en la carpeta de uploads, ya que esta carpeta no debe contener archivos ejecutables.
Paso 5: Cambiar todas las credenciales
| Credencial | Donde cambiarla |
|---|---|
| Contrasena de todos los usuarios de WordPress | Usuarios > Todos los usuarios |
| Contrasena de la base de datos | cPanel > MySQL Databases |
| Claves secretas de wp-config.php | Generador en api.wordpress.org/secret-key/1.1/salt/ |
| Contrasena FTP | cPanel > Cuentas FTP |
| Contrasena de cPanel | Panel de cliente del proveedor |
Medidas preventivas post-limpieza
- Activar un firewall de aplicacion web (WAF) como Wordfence o Cloudflare WAF.
- Instalar un plugin de autenticacion de dos factores para la cuenta de administrador.
- Solicitar al proveedor de hospedaje la revision de permisos y la habilitacion de ImunifyAV si esta disponible.
- Solicitar la eliminacion del dominio de listas negras a Google (Search Console > Seguridad > Solicitar revision) y Sucuri.
