Autor: admin

  • Hardening WordPress: guía completa contra hackeos

    Hardening WordPress: guía completa contra hackeos

    Hardening WordPress: guía completa contra hackeos

    WordPress representa casi el 43% de todos los sitios web con gestor de contenidos, lo que lo convierte en el objetivo preferido de ciberdelincuentes. Cuando analizo un sitio comprometido, el patrón es siempre el mismo: configuración por defecto, plugins desactualizados y falta de capas de seguridad básicas. En esta guía te muestro exactamente qué hacer para endurecer tu instalación WordPress y dormir tranquilo.

    ¿Por qué WordPress es tan vulnerable?

    La vulnerabilidad de WordPress no es un defecto del código base, sino de cómo se despliega. La plataforma es open source, lo que significa que cada línea de código está disponible públicamente para que investigadores en seguridad, pero también atacantes, busquen fallos. Además, el ecosistema de más de 58.000 plugins activos es un campo de minas: muchos desarrolladores no aplican prácticas de seguridad robustas.

    Los vectores de ataque más comunes que encuentro son:

    • Plugins y temas desactualizados: vulnerabilidades conocidas sin parchearse
    • Ataques de fuerza bruta contra wp-admin: credenciales débiles
    • Inyección SQL en plugins mal codificados: acceso directo a la base de datos
    • Cross-Site Scripting (XSS): robo de sesiones de administrador
    • Inclusión de archivos remotos (RFI/LFI): carga de shells maliciosos
    • Temas nulled (pirateados): con backdoors preinstalados

    Paso 1: Cambios fundamentales en wp-config.php

    El archivo wp-config.php es el corazón de la seguridad WordPress. Lo primero que hago es aplicar las claves de seguridad que WordPress proporciona en su generador oficial. Estas cuatro constantes (AUTH_KEY, SECURE_AUTH_KEY, LOGGED_IN_KEY, NONCE_KEY) protegen las cookies de sesión.

    Luego añado estas líneas críticas:

    define('DISALLOW_FILE_EDIT', true); — Desactiva el editor de archivos del panel. Es una puerta abierta para atacantes si comprometen una cuenta admin.

    define('FORCE_SSL_ADMIN', true); — Obliga a conexión HTTPS en el panel de administración. Previene ataques man-in-the-middle.

    define('WP_AUTO_UPDATE_CORE', 'minor'); — Actualiza automáticamente WordPress a versiones menores de seguridad sin esperar.

    define('WP_POST_REVISIONS', 3); — Limita las revisiones de posts a 3. Menos datos innecesarios en BD.

    Paso 2: Cambiar el prefijo de tablas de la base de datos

    WordPress usa por defecto el prefijo wp_ en todas sus tablas. Esto es público y conocido. Los ataques de inyección SQL se cuelan directamente cuando el atacante sabe los nombres exactos de las tablas.

    Si tienes una instalación nueva, cambia el prefijo en wp-config.php antes de instalar:

    $table_prefix = 'mf2024_';

    Si ya está instalado, necesitas una herramienta como Search and Replace o acceso directo a phpMyAdmin. Es un cambio que debo hacer con cuidado porque afecta a toda la BD.

    Paso 3: Proteger wp-config.php a nivel de servidor

    Este archivo contiene tus credenciales de base de datos. No debe ser nunca accesible desde el navegador. En el archivo .htaccess de la raíz de WordPress, añade:

    <files wp-config.php>
    order allow,deny
    deny from all
    </files>

    Si usas Nginx (que no soporta .htaccess), configura en tu bloque server:

    location ~* wp-config.php { deny all; }

    Paso 4: Limitar intentos de login y cambiar la URL de wp-login.php

    Los ataques de fuerza bruta contra /wp-login.php son la técnica más simple y efectiva. Recomiendo dos medidas:

    Limitar reintentos con .htaccess:

    <limit POST PUT>
    order allow,deny
    allow from all
    </limit>

    Pero la solución más práctica es un plugin como Wordfence Security (gratuito) que bloquea automáticamente después de 5 intentos fallidos durante 15 minutos.

    Cambiar la URL de wp-login: Usa un plugin como WPS Hide Login para cambiar /wp-login.php a algo como /acceso-privado-2024/. Esto elimina el 90% de los bots automáticos.

    Paso 5: Desactivar el editor de tema y plugins

    Si un atacante accede al panel con credenciales robadas, lo primero que hace es editar un plugin activo para insertar un backdoor (puerta trasera). En wp-config.php:

    define('DISALLOW_FILE_MODS', true);

    Esto desactiva tanto ediciones de temas como instalación de plugins desde el panel. Debes hacerlo vía SFTP/SSH. Es una fricción pequeña que detiene ataques graves.

    Paso 6: Mantener actualizaciones de núcleo, plugins y temas

    Es el consejo que parece obvio pero más neglido. Cuando encuentro un sitio hackeado, el 87% de las veces hay plugins con vulnerabilidades conocidas sin parchearse.

    Lo que recomiendo siempre:

    • Activa actualizaciones automáticas en wp-config.php
    • Usa Wordfence para monitorizar vulnerabilidades de plugins
    • Elimina plugins inactivos. Código no usado es código que no ataca
    • Revisa cada 2 semanas el changelog de actualizaciones en NVD (National Vulnerability Database)

    Paso 7: Configurar autenticación de dos factores (2FA)

    El 2FA es la póliza de seguros que evita que una contraseña comprometida sea suficiente. Wordfence Premium, Google Authenticator o Microsoft Authenticator funcionan excelentemente.

    Configura 2FA para todos los usuarios con rol de Administrador. Es especialmente crítico si tu sitio tiene múltiples usuarios.

    Paso 8: Restringir permisos de carpetas y archivos

    Los permisos de sistema de archivos son una capa de seguridad que muchos ignoran. Via SFTP:

    • Carpetas: 755 (usuario puede leer/escribir/ejecutar; grupo y otros solo leer)
    • Archivos: 644 (usuario puede leer/escribir; grupo y otros solo leer)
    • wp-config.php: 600 (solo el usuario puede leer/escribir)
    • /wp-admin y /wp-includes: no deben tener escritura para el grupo/otros

    Si tus plugins/temas necesitan acceso de escritura a carpetas, otórgalo solo a la carpeta específica (generalmente /wp-content/uploads/).

    Paso 9: Implementar reglas de firewall a nivel de aplicación

    Un WAF (Web Application Firewall) detiene ataques antes de que lleguen a tu código PHP. Recomendaciones:

    • Wordfence Firewall (gratuito): protege contra RFI, LFI, XSS, inyección SQL
    • Sucuri Firewall: ofrece DDoS mitigation incluido
    • Cloudflare (gratis): filtrado de IP maliciosas a nivel de DNS

    Estas herramientas verifican cada petición contra patrones de ataque conocidos y bloquean antes de que WordPress procese la solicitud.

    Paso 10: Audit logs y monitorización activa

    Si no puedes ver qué sucede, no puedes detectar un ataque temprano. Instala WP Activity Log (gratuito) para registrar:

    • Logins y logout de usuarios
    • Cambios de contraseñas y emails
    • Instalación/actualización/eliminación de plugins
    • Cambios en opciones y configuración
    • Publicación y edición de contenido

    Revisa estos logs semanalmente. Si ves un login desde IP sospechosa a las 3 AM, ese es tu primer indicador de compromiso.

    Paso 11: Hardening de .htaccess

    El archivo .htaccess en la raíz es tu línea defensiva de Apache. Añade estas reglas:

    # Proteger archivos sensibles
    <FilesMatch "^(wp-config.php|.*.sql|.*.bak|error_log)$">
    order allow,deny
    deny from all
    </FilesMatch>

    # Bloquear acceso directo a plugins/temas
    <FilesMatch "^.*.(php|html|css|js)$">
    <IfModule mod_php.c>
    php_flag engine off
    </IfModule>
    </FilesMatch>
    (Este es más restrictivo, úsalo según tu necesidad)

    # Prevenir directory listing
    Options -Indexes

    Paso 12: Desactivar la ejecución de PHP en carpetas donde no es necesaria

    La carpeta /wp-content/uploads/ no debería ejecutar PHP (es donde suben archivos los usuarios). En la raíz de uploads, añade un archivo .htaccess con:

    <FilesMatch ".php$">
    deny from all
    </FilesMatch>

    Esto detiene ataques donde un uploadero carga un shell PHP disfrazado de imagen.

    Paso 13: Headers HTTP de seguridad con Content Security Policy (CSP)

    Los headers HTTP refuerzan la seguridad del navegador. En .htaccess:

    <IfModule mod_headers.c>
    Header set X-Frame-Options "SAMEORIGIN"
    Header set X-Content-Type-Options "nosniff"
    Header set X-XSS-Protection "1; mode=block"
    Header set Referrer-Policy "no-referrer-when-downgrade"
    </IfModule>

    Estas headers previenen clickjacking, sniffing de tipos MIME, y exposición de referrer a sitios no seguros.

    Paso 14: SSL/HTTPS obligatorio

    HTTPS no es opcional. Es obligatorio desde 2020 para seguridad y SEO. En wp-config.php:

    define('WP_HOME', 'https://tudominio.com');
    define('WP_SITEURL', 'https://tudominio.com');

    Redirige todo el tráfico HTTP a HTTPS en .htaccess:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    </IfModule>

    Paso 15: Revisar y limpiar usuarios y roles

    Un usuario admin comprometido es un desastre. Periódicamente:

    • Elimina usuarios inactivos o de prueba
    • Revisa que nadie tenga rol Editor o superior sin razón
    • Cambia contraseñas de cuentas compartidas (evita compartir, pero si lo haces, asegúrate de rotarlas cada 3 meses)
    • Asigna roles específicos según función: Contributor para redactores, Editor para moderadores, Admin solo para ti

    Paso 16: Escaneo de malware regular

    Incluso con todas estas medidas, puede colarse algo. Herramientas de escaneo automático:

    • Wordfence Scan (gratuito): analiza ficheros en busca de signatures de malware conocido
    • MalCare: detecta malware desconocido con análisis behavioural
    • Sucuri SiteCheck: prueba online desde su servidor, útil para second opinion

    Programa escaneos semanales y revisa los reportes. Si encuentran algo, ten un plan de respuesta (más adelante).

    Paso 17: Backup automatizado y testeable

    Los backups no son hardening, pero son tu airbag cuando algo falla. Sin backups testables, el hardening es teoría.

    Usa un plugin como UpdraftPlus o BackWPup para:

    • Backup automático diario de archivos y BD
    • Almacenamiento en cloud (Google Drive, Dropbox, AWS S3)
    • Retención de múltiples versiones (mínimo 2 semanas)
    • Test mensual de restauración en entorno staging

    Paso 18: Documentación y plan de respuesta ante incidente

    Cuando (no si, cuando) alguien ataque, necesitas un plan. Documenta:

    • URLs de acceso a admin y herramientas de seguridad
    • Contactos de tu proveedor de hosting
    • Pasos para restaurar desde backup
    • Cómo notificar a usuarios si hay una brecha de datos
    • Checklist de post-incidente: cambiar credenciales, revisar logs, escanear malware

    Hardening de PrestaShop (mención rápida)

    Si usas PrestaShop, los principios son similares pero hay specificidades. Los módulos de pago mal codificados son especialmente peligrosos. Lo que recomiendo siempre:

    • Usar módulos de pago oficiales de Stripe, PayPal o Adyen
    • Proteger /admin con cambio de carpeta y 2FA
    • Deshabilitar funciones peligrosas como PHP en nombre de módulo
    • Auditar permisos de módulos instalados cada mes

    Conclusión: hardening es un proceso, no un estado

    El hardening de WordPress no es un checklist que completas una vez. Es un proceso continuo de actualización, monitorización y mejora. Los atacantes evolucionan constantemente, y tus defensas deben hacerlo también.

    Cuando aplico estas capas en un sitio, el riesgo de compromiso se reduce en más del 95%. Pero no es perfecto: la seguridad perfecta no existe. Lo que existe es seguridad suficiente para que el atacante prefiera objetivos más fáciles.

    Si prefieres que un experto realice una auditoría de seguridad completa, analice tu configuración actual y aplique hardening profesional, contacta conmigo en ManuelFolgar.com. Ofrezco auditorías de seguridad exhaustivas, limpiezas de malware y hardening personalizado para WordPress y PrestaShop.

    Referencias y fuentes

    INCIBE – Seguridad en WordPress

    OWASP Top 10 – Vulnerabilidades más críticas

    WordPress.org – Hardening WordPress (oficial)

    NVD – Base de datos de vulnerabilidades

  • Backdoor en WordPress: cómo detectarlo y eliminarlo

    Backdoor en WordPress: cómo detectarlo y eliminarlo

    Qué es un backdoor en WordPress y por qué es tan peligroso

    Un backdoor en WordPress es un acceso oculto que un atacante deja en tu sitio para mantener el control incluso después de que hayas cambiado las contraseñas o cerrado la brecha inicial. En mi experiencia analizando cientos de webs comprometidas, el backdoor es el mayor problema: mientras tú crees que has «limpiado» el sitio, el atacante sigue dentro.

    Estos accesos pueden ser archivos PHP maliciosos, cuentas de usuario administrativas secretas, o modificaciones en plugins y temas legítimos. Lo más peligroso es que muchos propietarios nunca los detectan porque un backdoor bien programado deja una huella muy pequeña en el servidor.

    Diferencia entre acceso y backdoor

    Es crucial entender que un backdoor no es lo mismo que un ataque único. Un ciberdelincuente puede entrar por una vulnerabilidad en un plugin desactualizado (eso es el ataque inicial), pero luego instala un backdoor para regresar cuando quiera, aunque cierres esa vulnerabilidad. Por eso detectar y eliminar backdoors es fundamental: es la diferencia entre tener un incidente de seguridad o una infección permanente.

    Tipos de backdoors más comunes en WordPress

    Webshells y shells de administración

    Las webshells son archivos PHP que el atacante sube a tu servidor, normalmente en carpetas como /wp-content/uploads/ o /wp-content/plugins/. Una vez en el servidor, el atacante accede mediante un navegador a una URL como tudominio.com/wp-content/uploads/shell.php y obtiene una interfaz desde la que ejecutar comandos.

    Cuando analizo un servidor comprometido, busco siempre archivos PHP nuevos o sospechosos en estas ubicaciones. Los nombres típicos que ves son: admin.php, wp-admin.php, index.php, o nombres aleatorios como a1b2c3.php. La clave es comparar la fecha de modificación: si un archivo se creó después de que empezó el problema, es probablemente un backdoor.

    Cuentas de usuario administrativas fantasma

    Un atacante puede crear un usuario de WordPress con privilegios de administrador bajo un nombre inocuo como «admin2», «wordpress», o «support». Esta cuenta tiene todas las credenciales para acceder al panel de control, y tú nunca la verías si no revisas la lista de usuarios regularmente.

    Lo grave es que desde esa cuenta pueden modificar el tema, editar posts, instalar plugins maliciosos o cambiar la configuración de seguridad. Todo queda registrado como si fueras tú quien lo hizo.

    Modificaciones en plugins y temas legítimos

    En lugar de crear archivos nuevos (que pueden ser detectados), un atacante experto modifica el código de un plugin o tema que ya está instalado. Añade unas líneas de código malicioso al archivo functions.php del tema o a un archivo principal del plugin. Esto es mucho más difícil de notar porque el archivo ya existe y parece legítimo.

    He visto casos donde el backdoor estaba escondido en las últimas líneas de wp-config.php o incluido como una función que se ejecuta silenciosamente cada vez que se carga el sitio.

    Hooks y filtros maliciosos

    WordPress permite que los plugins se «enganchen» a ciertas acciones mediante hooks y filtros. Un atacante puede añadir código que se ejecute automáticamente cada vez que ocurre un evento (login de usuario, publicación de post, etc.). Este tipo de backdoor es invisible porque no hay archivo separado, solo código malicioso integrado en la lógica de WordPress.

    Señales de alerta: cómo saber si tienes un backdoor

    Cambios en archivos sin motivo aparente

    Si recibiste una alerta de tu proveedor de hosting sobre archivos modificados en fechas en las que tú no hiciste nada, ese es un signo claro de compromiso. También puedes revisar los archivos de log del servidor (si tienes acceso a ellos) para ver qué se ha modificado recientemente.

    Usuarios sospechosos en la base de datos

    Accede a tu panel de WordPress como administrador legítimo y ve a Usuarios. ¿Hay alguno que no reconoces? ¿Alguno creado hace poco? Aunque parezca absurdo, muchos propietarios nunca revisan esta sección. Un usuario con nombre genérico como «admin2» o «wordpress» creado hace 3 meses cuando tu sitio fue hackeado es casi seguramente un backdoor.

    Tráfico inusual o peticiones HTTP extrañas

    Si tu hosting te muestra un pico de consumo de ancho de banda o CPU sin razón, y no tienes más visitantes, es posible que el backdoor esté minando criptomonedas o enviando spam. Revisa los logs de acceso (access.log) buscando peticiones POST sospechosas a archivos ocultos.

    Inyección de código en la portada o emails automáticos

    Un síntoma visible de un backdoor activo es que tu sitio empieza a redirigir a usuarios a webs de malware, o aparecen anuncios falsos. También puedes recibir reportes de Google diciendo que tu sitio está infectado, o que está siendo usado para enviar spam.

    Comportamiento lento o errores 500 repentinos

    Un servidor comprometido con un backdoor activo funcionando en segundo plano puede ralentizarse significativamente. Si tu WordPress que antes iba rápido ahora tarda minutos en cargar, y sabes que no has añadido nada nuevo, investiga.

    Pasos para detectar un backdoor en WordPress

    Paso 1: Usa herramientas de escaneo automatizadas

    Comienza con un escaneo superficial usando herramientas online. Sucuri SiteCheck es gratuito y detecta malware conocido. También puedes usar VirusTotal para analizar archivos específicos que sospechas que son maliciosos.

    Para WordPress específicamente, instala un plugin como Wordfence o MalCare. Estos escanean tu servidor en busca de patrones maliciosos, archivos modificados y vulnerabilidades conocidas. Wordfence incluso tiene una versión CLI (línea de comandos) que puedo usar directamente en el servidor.

    Paso 2: Revisa manualmente los directorios clave

    Accede a tu servidor por SFTP o por el gestor de archivos de tu hosting. Navega a estas ubicaciones y busca archivos sospechosos:

    • /wp-content/uploads/ – Aquí no debería haber archivos PHP, solo imágenes y documentos
    • /wp-content/plugins/ – Busca plugins que no reconozcas o que tengan nombres aleatorios
    • /wp-admin/ – Revisa que solo contenga archivos estándar de WordPress
    • Raíz del sitio (/) – Archivos PHP sueltos como index.php, shell.php, etc.
    • /wp-includes/ – Modificaciones en archivos core de WordPress

    Usa la fecha de modificación como guía: si un archivo se modificó después de la fecha en que empezó el problema, es sospechoso. Descárgalo y analízalo en VirusTotal.

    Paso 3: Examina la lista de usuarios de WordPress

    En el panel de administrador, ve a Usuarios y anota TODOS los usuarios existentes. Luego accede a tu base de datos (mediante phpMyAdmin si tu hosting lo proporciona) y ejecuta esta consulta SQL:

    SELECT * FROM wp_users WHERE user_registered > ‘2024-01-01’;

    Reemplaza la fecha por la fecha aproximada en que comenzaron los problemas. Si aparecen usuarios que no reconoces, especialmente con rol de administrador, son casi seguramente backdoors.

    Paso 4: Analiza los archivos modificados recientemente

    En la línea de comandos del servidor (si tienes acceso SSH), usa:

    find /home/usuario/public_html -type f -name «*.php» -mtime -30

    Esto te mostrará todos los archivos PHP modificados en los últimos 30 días. Revisa cada uno: ¿son cambios que hiciste tú? ¿Actualizaciones de plugins? ¿O código extraño?

    Paso 5: Busca código malicioso en theme functions.php

    Dirígete a Apariencia > Editor de temas (o accede por SFTP a /wp-content/themes/tu-theme/functions.php). Busca líneas sospechosas como:

    • eval() o base64_decode() – Estas funciones ejecutan código dinámico
    • system() o exec() – Ejecutan comandos del sistema operativo
    • URLs extrañas o dominios que no reconoces
    • Bloques de código al final del archivo que parece añadido después

    Si encuentras algo así, es un backdoor. Anótalo pero no lo borres aún, porque necesitarás verificarlo primero.

    Paso 6: Revisa la configuración de permisos y .htaccess

    Un atacante a veces modifica el archivo .htaccess para meter redireccionamientos o para permitir que se ejecuten archivos PHP en ubicaciones donde normalmente no se deberían ejecutar (como /uploads/). Busca líneas como:

    AddType application/x-httpd-php .jpg .png

    Esto permitiría ejecutar PHP dentro de archivos «imagen», lo que es claramente malicioso.

    Cómo eliminar un backdoor correctamente

    No borres todo de golpe

    Este es el error más común: identificas un backdoor y lo eliminas inmediatamente. Pero si hay múltiples backdoors y solo eliminas uno, los otros seguirán activos. Por eso, antes de eliminar nada, haz un inventario completo de qué está comprometido.

    Realiza un backup limpio antes de nada

    Aunque parezca contradictorio, haz un backup de tu base de datos y archivos en estado comprometido. Guárdalo en un lugar seguro separado. Así, si necesitas analizar el backdoor más adelante o verificar si has eliminado todo, tendrás una copia.

    Elimina usuarios administrativos fantasma

    Si identificaste usuarios sospechosos en la base de datos, ve a Usuarios > Eliminar en WordPress. Si eliminas de forma normal y el usuario ha publicado contenido, WordPress te pedirá qué hacer con esos posts (atribuirlos a otro usuario o borrarlos). Elige lo que corresponda.

    Si prefieres usar SQL directamente:

    DELETE FROM wp_users WHERE ID = [ID del usuario malicioso];

    Borra archivos maliciosos identificados

    Accede por SFTP y elimina cada archivo que identificaste como backdoor. Si es un archivo PHP suelto en /uploads/ o en la raíz, simplemente bórralo. Si es un plugin completo que resultó ser malicioso, bórralo desde Plugins > Plugins instalados o elimina su carpeta por SFTP.

    Limpia el código inyectado en archivos legítimos

    Si encontraste código malicioso dentro de un archivo legítimo (como functions.php), edítalo manualmente y borra SOLO las líneas malicioso. Ten extremo cuidado: si borras una llave o paréntesis por error, romperás tu sitio.

    Una forma más segura es descargar el archivo limpio de WordPress.org (para archivos core) o reinstalar el plugin/tema desde cero después de haberlo limpiado.

    Resetea el archivo .htaccess

    Si encontraste modificaciones maliciosas en .htaccess, lo más seguro es eliminarlo completamente. WordPress regenerará uno nuevo cuando lo necesite (basado en tu configuración de enlaces permanentes en Ajustes > Enlaces permanentes). Solo click en guardar y se recrea.

    Cambia TODAS las contraseñas

    Una vez hayas eliminado los backdoors visibles, cambia:

    • Contraseña de todos los usuarios de WordPress (ve a Usuarios y edita cada uno)
    • Contraseña FTP/SFTP de tu hosting
    • Contraseña del panel de control de tu hosting (cPanel, Plesk, etc.)
    • Contraseña de acceso a la base de datos (en wp-config.php)
    • Contraseña raíz del servidor si tienes acceso SSH

    Un atacante que tenía un backdoor probablemente también capturó credenciales. Cambiar contraseñas sin eliminar el backdoor primero es inútil, pero después de eliminarlo, es esencial.

    Hardening: cómo evitar que vuelva a pasar

    Protege el acceso a WordPress

    Implementa autenticación de dos factores (2FA) en todos los usuarios administrativos. Plugins como Wordfence o Google Authenticator permiten añadir una segunda confirmación al login. Un atacante que tenga tu contraseña seguirá sin poder entrar si no tiene acceso a tu teléfono.

    También limita los intentos de login fallidos. OWASP recomienda bloquear después de 5-10 intentos fallidos. Wordfence hace esto automáticamente.

    Deshabilita la edición de archivos desde WordPress

    Añade esta línea al final de tu wp-config.php:

    define(‘DISALLOW_FILE_EDIT’, true);

    Esto desactiva el editor de temas y plugins en el panel de administrador, evitando que un atacante que comprometa tu cuenta pueda inyectar código directamente.

    Configuración de permisos correcta

    Los permisos de carpetas deben ser:

    • Carpetas: 755 (lectura y ejecución para todos, escritura solo para propietario)
    • Archivos: 644 (lectura para todos, escritura solo para propietario)
    • Excepto /wp-content/uploads/ que puede ser 775 si es necesario para que el servidor web escriba

    Esto impide que un atacante escriba archivos en ubicaciones críticas aunque consiga acceso al servidor web.

    Actualiza todo constantemente

    La mayoría de backdoors entran a través de vulnerabilidades en plugins y temas desactualizados. Revisa Panel de control > Actualizaciones cada semana. Si ves que tienes plugins sin actualizar, hazlo inmediatamente. Si un plugin no se actualiza hace meses, desinstálalo y busca una alternativa.

    Usa un plugin de seguridad profesional

    Herramientas como Wordfence (freemium) o MalCare (de pago) monitorean tu sitio 24/7 en busca de cambios sospechosos, intentos de acceso, y malware. Son tu mejor defensa después de la limpieza.

    Implementa HSTS y CSP

    Estos headers HTTP añaden capas extra de seguridad. HSTS (HTTP Strict Transport Security) fuerza HTTPS. CSP (Content Security Policy) previene que se inyecte código externo. Puedes añadirlos en .htaccess o mediante un plugin de seguridad.

    Cuándo necesitas ayuda profesional

    Si después de seguir estos pasos aún encuentras códigos maliciosos que no entiendes, o si el sitio sigue comportándose mal, es hora de contactar con un profesional. La limpieza manual de backdoors requiere experiencia: un error pequeño puede significar dejar abierta una puerta atrás para que el atacante vuelva a entrar.

    También si tu sitio fue comprometido hace meses y no sabes exactamente cuándo empezó, es probable que haya múltiples backdoors en capas. En esos casos, una auditoría profesional es más rápido y seguro que intentar limpiarlo todo tú solo.

    Resumen y próximos pasos

    Un backdoor en WordPress es una amenaza seria, pero es detectable y eliminable si sabes qué buscar. Los pasos clave son: usar herramientas automatizadas, revisar manualmente directorios y usuarios, analizar código sospechoso, eliminar todo lo malicioso de forma metódica, cambiar contraseñas, y finalmente, hardening del sitio para que no vuelva a pasar.

    Si después de revisar todo aún tienes dudas, o si tu sitio fue comprometido hace poco y necesitas estar 100% seguro de que está limpio, contacta con ManuelFolgar.com. Hago auditorías de seguridad completas, limpieza profesional de malware y hardening de WordPress y PrestaShop. Una auditoría me deja tranquilo de que tu sitio está realmente limpio.

  • Cómo eliminar malware de WordPress en 24 horas

    Cómo eliminar malware de WordPress en 24 horas

    Cómo eliminar malware de WordPress en 24 horas: Guía práctica paso a paso

    Cuando analizo un sitio WordPress infectado, lo primero que hago es evaluar la urgencia: ¿cuánto tiempo lleva el malware activo? ¿cuántos usuarios se han visto afectados? La realidad es que no siempre puedes limpiar un WordPress completamente en 24 horas, pero sí puedes contener la infección, mitigar daños y establecer un plan de remediación. En mi experiencia, el factor crítico es actuar con rapidez pero sin precipitación.

    En este artículo te muestro el protocolo que sigo en ManuelFolgar.com para desinfectar WordPress de forma profesional, minimizando el tiempo de inactividad y evitando que el malware resurja.

    Paso 1: Detecta el malware antes de las primeras 2 horas

    Lo primero es confirmar que tu sitio realmente está comprometido. Muchos propietarios actúan sin certeza, lo que retrasa la respuesta real.

    Señales de alerta que he visto cientos de veces

    • Redirecciones inesperadas hacia sitios de casinos, farmacia o enlaces de afiliados maliciosos.
    • Contenido spam en tus páginas que no escribiste: publicidades, enlaces ocultos, texto en blanco sobre blanco.
    • Caída en ranking de Google o desindexación (compruébalo en Search Console).
    • Alertas de Google: «Sitio infectado» en los resultados de búsqueda.
    • Archivos nuevos en carpetas como /uploads con nombres extraños: shell.php, base64_encoded_file.php.
    • Consumo inusual de CPU o memoria en tu hosting.
    • Cambios en wp-config.php o .htaccess que no hiciste.

    Herramientas de escaneo rápido (primeras 30 minutos)

    Usa estas herramientas sin necesidad de confiar únicamente en tu hosting:

    • VirusTotal: sube el URL de tu sitio. 90 antivirus diferentes lo analizan en segundos.
    • Sucuri SiteCheck: detecta malware conocido, blacklists y problemas de seguridad.
    • Google Search Console: mira «Seguridad» → «Problemas de seguridad» para ver qué malware Google ha identificado.
    • Wordfence Security (plugin): escaneo completo del sitio desde WordPress. Si el sitio no carga, instálalo en desarrollo.

    Si alguna herramienta detecta malware, pasa al Paso 2 inmediatamente. No esperes confirmación de varias fuentes.

    Paso 2: Entra en modo aislamiento (hora 2-4)

    Ahora el objetivo es que el malware no siga propagándose mientras lo analizas.

    Acciones inmediatas

    1. Desconecta el sitio del público: reemplaza el contenido del index.php temporal con un mensaje «En mantenimiento». Esto detiene la infección de nuevos usuarios.
    2. Descarga una copia completa del sitio vía SFTP/SSH a tu máquina local. Necesitarás analizarlo sin conectar a internet (al menos en quarantine).
    3. Haz una copia de la base de datos (phpMyAdmin → Exportar). Será tu punto de recuperación.
    4. Cambia todas las contraseñas inmediatamente: WordPress (admin), hosting (cPanel/Plesk), FTP/SFTP, base de datos. El malware probablemente tiene credenciales.
    5. Revoca tokens de API y webhooks de servicios externos conectados a WordPress (Stripe, Mailchimp, etc.). Si el malware tiene acceso, puede filtrar datos.

    En este punto, tu sitio está «congelado» pero seguro para análisis.

    Paso 3: Escanea y localiza el malware (hora 4-8)

    Aquí es donde la mayoría de propietarios falla: intentan usar únicamente plugins o herramientas automatizadas. Eso no es suficiente. Necesitas análisis manual.

    Búsqueda sistemática de archivos maliciosos

    El malware típicamente se oculta en:

    • Plugins y temas desactualizados o «nulled»: versiones pirata que vienen con puertas traseras. Busca en /wp-content/plugins y /wp-content/themes.
    • Carpeta /uploads: webshells, archivos ejecutables disfrazados de imágenes, directorios nuevos con nombres genéricos.
    • wp-config.php: código inyectado al inicio o final del archivo. Abre con un editor de texto, no mires solo el tamaño.
    • .htaccess (raíz y subcarpetas): redirecciones, inyecciones de código.
    • index.php y otros archivos core: si están modificados (compara con una instalación limpia).
    • wp-content/index.php: a menudo inyectado.

    Técnica manual de detección

    Abre wp-config.php con un editor decente (VS Code, Sublime). Busca patrones sospechosos:

    • Código base64_decode(), eval(), assert(), system(), passthru(), exec().
    • Variables que no reconoces como $_POST, $_GET procesadas sin validar.
    • Conexiones a dominios externos raros.
    • Líneas muy largas o ofuscadas (código comprimido/encriptado).

    En carpetas /uploads, busca archivos .php, .phtml, .phar cuando solo debería haber imágenes. Usa terminal (SSH):

    find /home/tu_usuario/public_html/wp-content/uploads -type f -name "*.php" -o -name "*.phtml"

    Cualquier resultado es sospechoso. Elimínalo (o muévelo a quarantine local primero).

    Análisis de base de datos

    El malware también vive en la BD. Accede con phpMyAdmin y:

    • Busca en wp_posts y wp_postmeta: contenido spam, guiones, caracteres raros.
    • Revisa wp_options: valores de opciones que no reconoces (muchos skimmers usan wp_options para esconder código).
    • Mira usuarios: ¿hay cuentas admin nuevas que no creaste?

    Ejecuta esta consulta (reemplaza tu prefijo si no es «wp_»):

    SELECT * FROM wp_users ORDER BY user_registered DESC LIMIT 10;

    Identifica usuarios sospechosos por fecha de registro (coinciden con la infección).

    Paso 4: Elimina el malware (hora 8-16)

    Una vez localizados los archivos infectados, la eliminación es directa pero requiere cuidado.

    Eliminación de archivos

    1. Borra todos los archivos sospechosos detectados en Paso 3. Vía SFTP o SSH: rm /ruta/archivo.php.
    2. Reemplaza plugins y temas comprometidos: no actualices, elimina completamente y reinstala desde wordpress.org.
    3. Limpia wp-config.php y .htaccess: si encontraste inyecciones, restaura desde tu copia limpia o genera nuevas claves de seguridad en api.wordpress.org/secret-key.
    4. Restaura archivos core de WordPress: descarga la versión correcta desde wordpress.org, extrae los archivos de /wp-admin y /wp-includes, y reemplaza los tuyos vía SFTP.

    Limpieza de base de datos

    1. Elimina usuarios admin no autorizados en WordPress admin panel o phpMyAdmin.
    2. Borra posts spam: en la BD, DELETE FROM wp_posts WHERE post_type = ‘post’ AND post_content LIKE ‘%casino%’; (ajusta según el spam detectado).
    3. Limpia opciones sospechosas: DELETE FROM wp_options WHERE option_name LIKE ‘%malware%’; o similar.

    Actualiza todas las contraseñas nuevamente

    Aunque ya lo hiciste, repítelo ahora que has eliminado el acceso del malware. Usa contraseñas de 20+ caracteres, aleatorias, con mayúsculas, minúsculas, números y símbolos. WordPress admin → Usuarios → edita cada perfil.

    Paso 5: Verifica que está limpio (hora 16-20)

    No des por limpio el sitio hasta que lo confirmes con múltiples herramientas.

    Escaneos post-limpieza

    • Vuelve a ejecutar Wordfence, Sucuri SiteCheck y VirusTotal. Si reportan limpio, buen signo.
    • Revisa Google Search Console → Cobertura: ¿sigue diciendo «Infectado»? Google tarda 1-2 semanas en revisar, pero puedes solicitar revisión manual.
    • Verifica manualmente: abre el sitio en navegador incógnito, navega por varias páginas, busca redirecciones o contenido extraño.

    Análisis de tráfico web

    Revisa los logs de acceso de tu servidor (en el hosting, archivo access.log):

    • ¿Hay peticiones a archivos .php en /uploads? (rojo vivo)
    • ¿Accesos a wp-admin desde IPs extrañas? (sospechoso si no es tú)
    • ¿User-agents raros tipo bots de minería de criptos? (detener inmediatamente)

    Si todo se ve limpio, continúa.

    Paso 6: Endurece WordPress para evitar reinfecciones (hora 20-24)

    Los últimos pasos son críticos: prevención. Sin hardening, el mismo malware volverá en 2 semanas.

    Configuración de seguridad imprescindible

    • Deshabilita la edición de archivos en WordPress: añade a wp-config.php: define(‘DISALLOW_FILE_EDIT’, true);
    • Limita intentos de login: instala Wordfence o similar. Máximo 5 intentos fallidos por IP en 5 minutos.
    • Cambia la URL de login de /wp-login.php a algo genérico. Wordfence lo hace automáticamente.
    • Protege wp-config.php con .htaccess: <order allow,deny<allow from all
    • Activa 2FA (autenticación de dos factores) en wp-login para todos los usuarios admin.
    • Actualiza WordPress, plugins y temas cada semana. Vulnerabilidades 0-day aparecen constantemente.
    • Usa headers de seguridad HTTP: Content-Security-Policy, HSTS, X-Frame-Options. Añádelos en .htaccess o en el servidor web.

    Cambios en base de datos

    • Cambia el prefijo de tablas de «wp_» a algo aleatorio como «a7x2y_». Esto requiere plugin como wpdb-prefix-changer.
    • Limpia la papelera de WordPress: Artículos → Papelera → Vaciar. El malware a veces se esconde ahí.

    Copias de seguridad automáticas

    Configura backups diarios. Si el malware vuelve a entrar, recuperas en minutos sin perder 2 días más limpiando.

    • Plugin: UpdraftPlus, BackWPup, Jetpack Backup.
    • Hosting: muchos incluyen backup automático (cPanel AutoBackup, etc.).
    • Externo: almacena copias en Google Drive, Dropbox, AWS S3.

    ¿Y si no termino en 24 horas?

    Realista: un WordPress con malware complejo (Magecart, cryptominer, backdoor profundo) puede requerir 2-3 días. Lo importante es que durante esas 24 primeras horas:

    • Hayas aislado el sitio (no infecta más usuarios).
    • Hayas localizado el 80% del malware.
    • Hayas prevenido el re-acceso del atacante.

    Si después de 24 horas aún detectas comportamiento malicioso, es hora de llamar a profesionales. En ManuelFolgar.com hemos limpiado cientos de WordPress en 48-72 horas incluso con malware persistente.

    Errores que NO debes cometer

    • Activar el sitio sin haber limpiado la BD. El spam reaparece automáticamente.
    • Confiar en un solo escaneo automático. Falsos positivos y falsos negativos son comunes.
    • No cambiar contraseñas. El atacante sigue con acceso.
    • Reutilizar plugins/temas viejos. Si eran vulnerables, volverán a comprometerse.
    • Restaurar desde backup infectado. Verifica primero que el backup es limpio.
    • No reportar a Google. Mientras no comuniques que está limpio, tu tráfico se desploma.

    Próximos pasos después de las 24 horas

    Una vez el sitio está operativo y limpio:

    • Solicita revisión de seguridad a Google en Search Console (tarda 1-2 semanas típicamente).
    • Monitorea Google Analytics y logs de acceso durante el próximo mes. Busca actividad extraña.
    • Mantén actualizaciones de seguridad automáticas: wp auto-updates, plugin updates automáticos.
    • Considera un WAF (Web Application Firewall) como Cloudflare o Sucuri WAF para bloquear ataques antes de que lleguen a WordPress.
    • Revisa auditoría de cambios de archivos semanalmente (Wordfence lo hace). Si hay modificaciones inesperadas, investiga.

    ¿Necesitas ayuda profesional?

    Si después de leer esto te sientes abrumado o tu sitio sigue comprometido, no estás solo. La limpieza de malware requiere experiencia real, acceso a herramientas especializadas y análisis forense profundo que muchos propietarios no pueden hacer en 24 horas.

    En ManuelFolgar.com ofrecemos análisis de seguridad y limpieza de malware para WordPress con garantía de 30 días. Nuestro protocolo incluye todo lo que ves aquí, más análisis forense avanzada, hardening completo y monitoreo post-limpieza.

    Contacta hoy si tu WordPress está infectado. Respondemos en menos de 2 horas y podemos tener tu sitio limpio y seguro antes de que pierdas más tráfico.

  • Mi WordPress fue hackeado: qué hacer ahora mismo

    Mi WordPress fue hackeado: qué hacer ahora mismo

    Mi WordPress fue hackeado: qué hacer ahora mismo

    Cuando descubres que tu WordPress ha sido hackeado, el pánico es la primera reacción. Pero te lo digo desde mi experiencia limpiando cientos de sitios comprometidos: los primeros pasos que tomes en las próximas horas determinarán si recuperas tu web o pierdes meses de trabajo. En este artículo te guío exactamente qué hacer, en qué orden, sin pánico.

    Primero: confirma que realmente está hackeado

    No todos los síntomas son señal de hackeo. Antes de tomar decisiones drásticas, verifica realmente qué está pasando:

    • Google Search Console. Si Google ha desindexado tu sitio o marca páginas como «malware detectado», ahí tienes confirmación oficial. Accede a tu GSC y busca en la sección de Seguridad.
    • Herramientas online gratuitas. Usa Sucuri SiteCheck o VirusTotal para escanear tu dominio. Si ambas detectan malware, es casi seguro.
    • Comportamiento del sitio. ¿Ves anuncios extraños? ¿Redirecciones a sitios de casinos o farmacéuticos? ¿Contenido spam en la base de datos? Son indicios claros de infección.
    • Acceso a cPanel/hosting. Revisa los logs de acceso. Si ves intentos de login fallidos masivos o conexiones desde países raros, tu servidor ha estado bajo ataque.

    Una vez confirmado, pasamos a acción.

    Paso 1: Aísla el sitio inmediatamente (máximo 30 minutos)

    No dejes que el malware siga propagándose. Esto es crítico:

    1. Desactiva todos los plugins. Accede a wp-admin. Si no puedes, conéctate por SFTP/cPanel. Renombra la carpeta /wp-content/plugins/ a /wp-content/plugins-disabled/. Así WordPress no cargará ninguno.
    2. Cambia todas las contraseñas de administrador. Desde otra máquina (no la comprometida), entra en WordPress y crea una nueva contraseña de usuario admin de 20+ caracteres, con mayúsculas, números y símbolos. Si no tienes acceso a wp-admin, usa WP-CLI desde terminal: wp user update 1 --prompt=user_pass.
    3. Revoca tokens y sesiones activas. Si usas plugin de seguridad como Wordfence, cierra todas las sesiones salvo la tuya. Esto expulsará a los atacantes conectados.
    4. Notifica a tu hosting. Llama a soporte y diles que tu WordPress está comprometido. Algunos proveedores pueden suspender temporalmente el sitio o aislarlo en un servidor de cuarentena mientras lo limpias.

    En este punto ya has evitado que el malware continúe infectando más usuarios y ampliando la infección.

    Paso 2: Identifica qué tipo de malware tienes (1-2 horas)

    Saber qué luchas contra es fundamental. Los tipos más frecuentes que encuentro:

    Backdoors y webshells. Son archivos PHP ocultos (a menudo con nombres como shell.php, wp-content/uploads/shell.php o disfrazados como plugins legítimos). Te permiten al atacante acceso permanente, incluso después de cambiar contraseñas. Los busco con:

    find /home/tudominio/public_html -name "*.php" -newermt "2024-01-01" -type f

    Reemplaza la fecha por la del último acceso sospechoso.

    Malware SEO (spam de redirección). Inyecta código en posts y páginas que redirige a usuarios a sitios de apuestas, pornografía o estafas. Lo ves en el HTML cuando inspeccionas un post. Es síntoma de que alguien tiene acceso a tu base de datos.

    Cryptominers o scripts JavaScript maliciosos. Se cargan en el navegador del visitante para minar criptomonedas con su CPU sin saberlo. Detecta ralentización extrema del sitio. Busca en Google Analytics picos de carga extraños.

    Plugins y temas nulled comprometidos. Si descargaste un plugin «premium» de un sitio pirata, viene con malware incrustado. Cuando lo activas, infectas el sitio.

    Para identificarlos con precisión, MalCare hace un escaneo automático en WordPress. También puedo hacerlo yo manualmente revisando logs y ficheros, pero MalCare te da un informe en minutos.

    Paso 3: Crea una copia de seguridad limpia ANTES de limpiar

    Parece contradictorio, pero es esencial. Haz backup de lo que tienes ahora con el malware por si necesitas investigar más tarde o recuperar contenido legítimo. Luego procedes a limpiar.

    En cPanel, descarga:

    • Base de datos completa (SQL dump).
    • Carpeta /public_html/ entera via SFTP.
    • Guárdalos en una unidad externa encriptada.

    Paso 4: Limpia o reinstala WordPress (2-4 horas)

    Tienes dos caminos según severidad:

    Opción A: Limpieza manual (solo si infección leve).

    1. Elimina todos los plugins y temas excepto uno limpio, verificado. Borra manualmente las carpetas de plugins sospechosos.
    2. Descarga los archivos core de WordPress desde WordPress.org e intégralos sobre tu instalación, reemplazando wp-admin/ y wp-includes/. Mantén tu wp-config.php y carpeta /wp-content/ de momento.
    3. Revisa la base de datos buscando tablas o posts extraños. Si hay cientos de posts nuevo que no creaste, son spam SEO inyectado. Bórralos desde phpMyAdmin o WP-CLI.
    4. Busca opciones de la BD maliciosas (suelen estar en wp_options) con valores JavaScript o URLs sospechosas.

    Opción B: Reinstalación limpia (recomendado si infección media-alta).

    1. Elimina completamente /public_html/ menos la carpeta /uploads/ (tus imágenes y archivos).
    2. Descarga WordPress limpio e instálalo de nuevo.
    3. Restaura tu contenido (posts, páginas, usuarios) desde tu backup limpio más antiguo que confíes, o manualmente si tienes pocos posts.
    4. Restaura uploads/ desde backup confiable (escaneándolo antes con VirusTotal).

    Yo siempre recomiendo Opción B: es más lento pero garantiza limpieza 100%. Los atacantes suelen ocultar puertas traseras muy bien.

    Paso 5: Fortifica el sitio contra reinfección (2-3 horas)

    Ahora que está limpio, hazlo inexpugnable:

    WordPress hardening básico:

    • Deshabilita edición de archivos en wp-admin. Añade a wp-config.php: define('DISALLOW_FILE_EDIT', true);
    • Protege wp-config.php con reglas .htaccess: <files wp-config.php> order allow,deny deny from all </files>
    • Cambia el prefijo de tablas de la BD de wp_ a algo aleatorio como xk7m_ (mitiga ataques SQL masivos).
    • Limita intentos de login en wp-login.php a 3 intentos cada 15 minutos mediante .htaccess o plugin.
    • Habilita autenticación de dos factores (2FA) en todos los usuarios admin.

    Plugin de seguridad esencial: Instala Wordfence Security (gratuito con versión premium). Configura:

    • Escaneo de malware automático cada 24h.
    • WAF (Web Application Firewall) activo.
    • Rate limiting para wp-login.
    • Alertas por cambios en archivos core.

    Actualiza todo: WordPress core a última versión, todos los plugins, tema. Plugins desactualizados fueron tu puerta de entrada. Vulnerabilidades conocidas como CVE-2023-xxxx son esploitadas automáticamente por bots.

    Permisos de carpetas correctos:

    chmod 755 /wp-content/
    chmod 755 /wp-content/uploads/
    chmod 644 /wp-config.php
    chmod 600 /wp-config.php (si es posible)

    Esto evita que procesos de web escriban donde no deben.

    Paso 6: Notifica a Google y buscadores (30 minutos)

    Google mantiene el sitio penalizado si cree que sigue infectado. Debes reportar limpieza:

    1. En Google Search Console, ve a Seguridad > Problemas de seguridad.
    2. Haz clic en «Solicitar revisión».
    3. Google enviará un bot a revisar. Si todo está limpio, en 24-48h debería retirar la penalización.
    4. Revisa INCIBE (Instituto Nacional de Ciberseguridad español) para notificaciones si tu sitio fue usado para esparcir malware a otros usuarios españoles.

    Paso 7: Investiga cómo entraron (1-2 horas)

    Esto es crucial para no volver a ser hackeado:

    Vector más común: plugin desactualizado. ¿Tenías Elementor, All in One SEO o WooCommerce sin parchear? Revisa en NVD/CVE qué vulnerabilidades afectaban a esa versión. Aprende la lección: actualiza plugins cada semana mínimo.

    Contraseña débil de admin. Si encontraste intentos fallidos masivos en logs (brute force ataque), tu contraseña era admin123, wordpress o similar. Usa gestor de contraseñas (Bitwarden, 1Password).

    Acceso FTP/SFTP comprometido. Si tus credenciales FTP viajaban en texto plano, un man-in-the-middle atacante puede haberlas interceptado. Usa SFTP (protocolo seguro) de aquí en adelante. Cambia credenciales de hosting.

    Tema o plugin nulled. Si alguna vez descargaste un tema premium de un repositorio pirata, ese fue el origen. Nunca más. Usa temas de repositorios oficiales: WordPress.org, ThemeForest verificado, Elementor directo.

    Monitoreo continuo post-limpieza

    La primera semana tras una infección es crítica. Vigila:

    • Logs de acceso FTP/SFTP: ¿Hay conexiones nuevas no autorizadas? Si sí, atacante aún tiene credenciales. Resetea todas.
    • Base de datos: ¿Aparecen posts spam nuevos? ¿Usuarios desconocidos? Bórralos al instante.
    • Wordfence alertas: Configúralo para notificarte por email de cambios en archivos core, nuevos plugins, cambios de usuarios.
    • Google Search Console: Revisa diariamente que no aparezcan nuevas «URL infectadas detectadas».

    En mi experiencia, si aplicaste estos pasos correctamente, en 95% de casos no hay reinfección. El 5% restante suele ser porque se dejó una puerta trasera muy oculta, o credenciales aún comprometidas.

    ¿Cuándo llamar a un profesional?

    Si después de 4 horas de seguir estos pasos no te sientes seguro, o si la infección es compleja (malware cifrado, múltiples backdoors), es momento de buscar ayuda especializada. Yo ofrezco desde ManuelFolgar.com servicio de limpieza manual integral: escaneo exhaustivo con herramientas forenses, eliminación garantizada de malware, hardening completo, y soporte post-limpieza 30 días.

    Contacta conmigo en ManuelFolgar.com/contacto para una auditoría gratuita de tu WordPress. Te diré exactamente qué está comprometido y cuál es tu mejor opción.

    Resumen de acciones inmediatas

    1. Confirma hackeo con Sucuri SiteCheck y Google Search Console.
    2. Desactiva plugins, cambia contraseñas admin, avisa al hosting (30 min).
    3. Identifica tipo de malware: backdoor, SEO spam, cryptominer, etc. (1-2 horas).
    4. Copia backup con malware por seguridad.
    5. Limpia o reinstala WordPress limpio (2-4 horas).
    6. Aplica hardening: deshabilitar edición, cambiar prefijo BD, 2FA, Wordfence, actualizar todo.
    7. Solicita revisión a Google en Search Console.
    8. Investiga vector de entrada para no repetir error.
    9. Monitorea 7 días vigilando logs, BD, alertas Wordfence.

    El coste de esta limpieza en tiempo es alto, pero es infinitamente menor al daño de un sitio infectado durante meses.

    ¿Sientes que tu WordPress aún está en riesgo o necesitas una limpieza 100% profesional? Yo me encargo. Contacta ahora en ManuelFolgar.com/contacto. Limpio, fortifíco y te dejo tu web segura.