Un sitio WordPress hackeado puede causar desde pérdida de posicionamiento SEO hasta el envío masivo de spam o incluso infectar a los visitantes. Como informático, probablemente ya sabes que no basta con instalar un plugin y cruzar los dedos. Esta guía está pensada para quienes necesitan limpiar un sitio WordPress de forma manual, segura y profesional.
Paso 1: Aísla el Sitio y Haz Backup
Antes de comenzar cualquier tarea de limpieza, lo primero es detener el daño. Un sitio comprometido puede estar enviando spam, propagando malware o afectando a otros recursos del servidor.
¿Qué hacer?
- Activa un plugin de mantenimiento o crea una página temporal.
- Si tienes acceso al servidor, considera restringir el acceso vía
.htaccess
o firewall. - Haz un backup completo, incluso si está infectado. Necesitarás una copia para investigar los vectores de ataque y restaurar partes limpias.
Paso 2: Diagnóstico del Malware
Una buena limpieza empieza con saber qué buscar y dónde. Los atacantes suelen esconder código en archivos aparentemente inocuos o en lugares poco vigilados como la carpeta /uploads/
.
¿Dónde mirar primero?
- Archivos críticos:
wp-config.php
,.htaccess
,functions.php
- Carpetas clave:
/wp-content/
, especialmentethemes
,plugins
yuploads
- Base de datos: tablas como
wp_options
,wp_posts
ywp_users
Signos de infección comunes:
- Código ofuscado (
eval()
,base64_decode()
,gzinflate()
) - Archivos con nombres raros o recién modificados
- Iframes o scripts inyectados en entradas, widgets o temas
- Nuevos usuarios con rol de administrador
Herramientas útiles:
- Wordfence (plugin con escáner de malware y firewall)
- WPScan (CLI para detectar vulnerabilidades)
- ClamAV o Maldet si tienes acceso SSH
Paso 3: Limpieza Manual del Sitio
Una vez detectado el malware, llega el momento de eliminarlo manualmente. Esto implica reemplazar archivos del core, reinstalar plugins y temas, y limpiar la base de datos.
Limpieza de ficheros
1. Reemplaza el core de WordPress
Evita revisar archivo por archivo del core. La forma más rápida y segura de asegurar que el núcleo esté limpio es reinstalarlo:
wp core download --force
Si no tienes wp-cli
, descarga WordPress desde wordpress.org y sobrescribe estas carpetas:
/wp-admin/
/wp-includes/
⚠️ Cuidado: No sobrescribas la carpeta /wp-content/
. Aquí están tus temas, plugins y archivos multimedia. Vamos a revisarla por separado.
2. Audita /wp-content/
Esta carpeta no forma parte del core y por tanto es donde más suele esconderse malware. Aquí debes revisar:
➤ /uploads/
- No debería contener archivos PHP. Solo imágenes, PDF y archivos multimedia. Si encuentras
.php
, es casi seguro que son maliciosos. - Busca así:
find wp-content/uploads -type f -name "*.php"
✅ Acción recomendada: Elimina cualquier archivo .php
en /uploads/
, salvo que tengas una razón clara para mantenerlo (muy raro).
➤ /themes/ y /plugins/
- Verifica que todos los plugins y temas provengan del repositorio oficial o de fuentes confiables (como ThemeForest, Elegant Themes, etc.).
- Reinstala los plugins y temas desde sus fuentes originales, especialmente si los archivos han sido modificados recientemente.
wp plugin reinstall nombre-plugin
wp theme reinstall nombre-tema
✅ Consejo: Si un tema fue editado manualmente, haz una copia, compárala con la versión original y restaura solo el código legítimo.
3. Revisa .htaccess
Este archivo puede ser manipulado para redirigir tráfico a sitios maliciosos o bloquearte el acceso al panel. Borra su contenido y regenera uno limpio:
# .htaccess limpio para WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
4. Busca funciones maliciosas en los archivos PHP
Haz una búsqueda en todo el proyecto de funciones comúnmente usadas por malware:
grep -Ri --color 'eval(' *
grep -Ri 'base64_decode(' *
grep -Ri 'gzinflate(' *
grep -Ri 'shell_exec(' *
🔎 Estas funciones no son malas por sí mismas, pero si las ves en lugares inusuales (como un plugin que no debería ejecutarlas), podrían estar haciendo cosas sospechosas.
✅ Consejo: Automatiza esto con herramientas como Maldet o escáneres específicos para PHP.
Limpieza de Base de Datos
Muchos atacantes insertan código malicioso en el contenido del sitio: en posts, widgets, menús o incluso en las opciones del sitio. Por eso es vital auditar la base de datos.
1. Busca inyecciones en contenido
Los hackers suelen insertar iframes ocultos, scripts, redirecciones JS, etc. Haz búsquedas como:
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%<script%';
SELECT ID, post_title FROM wp_posts WHERE post_content LIKE '%iframe%';
SELECT * FROM wp_options WHERE option_value LIKE '%base64%';
📌 Si usas otro prefijo que no sea wp_
, adáptalo.
2. Revisa wp_options
Los atacantes a veces inyectan código en opciones de tema o widgets:
SELECT * FROM wp_options WHERE autoload='yes' AND LENGTH(option_value) > 1000;
Busca también cadenas largas y ofuscadas en option_value
, especialmente aquellas con eval
, base64
, etc.
✅ Consejo: Si ves algo raro pero no estás seguro de qué es, copia la cadena y decódificala con herramientas como CyberChef.
3. Verifica los usuarios administradores
3. Verifica los usuarios administradores
Muchos ataques crean cuentas nuevas con rol de administrador. Asegúrate de que no haya usuarios desconocidos:
SELECT ID, user_login, user_email FROM wp_users;
✅ Acción recomendada: Elimina cualquier usuario que no reconozcas. Si tienes dudas, cambia su rol a “suscriptor” temporalmente mientras investigas.
Paso 4: Reforzar la Seguridad
Una vez limpio tu WordPress, es momento de prevenir futuros ataques. Algunos pasos básicos:
- Actualiza siempre WordPress, plugins y temas a la última versión.
- Elimina todo lo que no uses: temas, plugins inactivos, instalaciones antiguas.
- Utiliza contraseñas fuertes para todos los usuarios y cambia la del panel de hosting y FTP.
- Instala un firewall como Wordfence o Sucuri.
- Desactiva la edición de archivos desde el dashboard:
// Agrega esto en wp-config.php
define('DISALLOW_FILE_EDIT', true);
Paso 5: Monitorización Continua
La limpieza no es el final. Los atacantes podrían intentar regresar, o haber dejado puertas traseras. Mantén vigilancia activa:
- Activa alertas de seguridad con plugins como Wordfence o iThemes Security.
- Revisa los logs del servidor en busca de accesos sospechosos.
- Considera servicios profesionales de monitorización si el sitio es crítico.
Conclusión
Limpiar un WordPress hackeado es un proceso delicado pero totalmente posible si se aborda con método y cuidado. Esta guía busca darte una ruta clara y segura para hacerlo tú mismo, sin depender únicamente de plugins milagrosos.
🔐 ¿Tu sitio fue comprometido y necesitas ayuda profesional? Contáctanos. Podemos ayudarte a desinfectar, asegurar y fortalecer tu WordPress.