{"id":3764,"date":"2026-08-14T00:45:54","date_gmt":"2026-08-13T22:45:54","guid":{"rendered":"https:\/\/mantenimientoweb.pro\/blog\/como-limpiar-un-sitio-wordpress-infectado-con-malware-paso-a-paso-2\/"},"modified":"2026-08-14T00:45:56","modified_gmt":"2026-08-13T22:45:56","slug":"como-limpiar-un-sitio-wordpress-infectado-con-malware-paso-a-paso-2","status":"publish","type":"post","link":"https:\/\/mantenimientoweb.pro\/blog\/como-limpiar-un-sitio-wordpress-infectado-con-malware-paso-a-paso-2\/","title":{"rendered":"\u00bfC\u00f3mo limpiar un sitio WordPress infectado con malware paso a paso?"},"content":{"rendered":"<p><main><\/p>\n<article>\n<p>\u00bfC\u00f3mo limpiar un sitio WordPress infectado con malware paso a paso? \ud83d\udee1\ufe0f<\/p>\n<p>Hay pocas escenas digitales tan desagradables como abrir tu sitio WordPress una ma\u00f1ana y encontrarlo convertido en una feria clandestina: redirecciones a p\u00e1ginas extra\u00f1as, anuncios farmac\u00e9uticos en japon\u00e9s, alertas rojas de Google, formularios que env\u00edan spam o una lentitud tan espesa como miel fr\u00eda. Ayer era tu web. Hoy parece una casa ocupada por desconocidos con muy mal gusto.<\/p>\n<p>Lo ir\u00f3nico \u2014con esa iron\u00eda fina que no consuela, pero al menos explica\u2014 es que muchas infecciones no llegan por una gran conspiraci\u00f3n de hackers encapuchados, sino por algo bastante dom\u00e9stico: un plugin sin actualizar, una contrase\u00f1a reciclada, un tema abandonado, un hosting mal configurado o un archivo subido hace a\u00f1os y olvidado como una llave debajo del felpudo. La seguridad web rara vez cae por una puerta blindada rota; suele caer por una ventana peque\u00f1a, mal cerrada, que nadie miraba.<\/p>\n<p>Limpiar un sitio WordPress infectado con malware exige calma, m\u00e9todo y cierta desconfianza saludable. No basta con instalar un plugin de seguridad y pulsar \u201cscan\u201d, aunque ser\u00eda bonito vivir en ese mundo. El malware en WordPress puede esconderse en archivos PHP, en la base de datos, en usuarios administradores falsos, en tareas programadas, en reglas de <code>.htaccess<\/code>, en <code>wp-config.php<\/code>, en <code>mu-plugins<\/code>, en directorios de carga e incluso en el propio servidor. Es una maleza con ra\u00edces. Si solo cortas las hojas, volver\u00e1.<\/p>\n<p>Esta gu\u00eda explica, paso a paso y con mirada profesional, c\u00f3mo diagnosticar, contener, limpiar y proteger un sitio WordPress infectado. Sirve tanto para propietarios de sitios como para desarrolladores, administradores de sistemas y responsables de mantenimiento web. No promete magia. Promete algo mejor: criterio.<\/p>\n<p>  <strong>Contenido de la gu\u00eda<\/strong><\/p>\n<ul>\n<li><a href=\"#sintomas\">S\u00edntomas de una infecci\u00f3n en WordPress<\/a><\/li>\n<li><a href=\"#antes\">Qu\u00e9 hacer antes de tocar nada<\/a><\/li>\n<li><a href=\"#paso1\">Paso 1: poner el sitio en cuarentena<\/a><\/li>\n<li><a href=\"#paso2\">Paso 2: crear una copia completa del sitio infectado<\/a><\/li>\n<li><a href=\"#paso3\">Paso 3: identificar el tipo de malware<\/a><\/li>\n<li><a href=\"#paso4\">Paso 4: limpiar archivos del n\u00facleo de WordPress<\/a><\/li>\n<li><a href=\"#paso5\">Paso 5: revisar plugins, temas y uploads<\/a><\/li>\n<li><a href=\"#paso6\">Paso 6: limpiar la base de datos<\/a><\/li>\n<li><a href=\"#paso7\">Paso 7: revisar usuarios, contrase\u00f1as y permisos<\/a><\/li>\n<li><a href=\"#paso8\">Paso 8: comprobar tareas cron, backdoors y persistencia<\/a><\/li>\n<li><a href=\"#paso9\">Paso 9: actualizar, endurecer y proteger<\/a><\/li>\n<li><a href=\"#paso10\">Paso 10: solicitar revisi\u00f3n a Google y otros servicios<\/a><\/li>\n<li><a href=\"#prevencion\">C\u00f3mo evitar una reinfecci\u00f3n<\/a><\/li>\n<\/ul>\n<h2 id=\"sintomas\">S\u00edntomas de un sitio WordPress infectado con malware \ud83d\udea8<\/h2>\n<p>Una infecci\u00f3n no siempre entra con fanfarria. A veces se presenta como un peque\u00f1o retraso en la carga, una l\u00ednea rara en el c\u00f3digo fuente o un enlace que no recuerdas haber puesto. Otras veces aparece con sirenas: el navegador bloquea la p\u00e1gina, Google muestra \u201cEste sitio puede haber sido hackeado\u201d y los clientes escriben correos con signos de exclamaci\u00f3n como si estuvieran apagando un incendio con cubos de agua.<\/p>\n<p>Algunos s\u00edntomas frecuentes de malware en WordPress son:<\/p>\n<ul>\n<li><strong>Redirecciones no autorizadas<\/strong> a sitios de apuestas, criptomonedas, contenido adulto, falsos sorteos o p\u00e1ginas de soporte t\u00e9cnico fraudulento.<\/li>\n<li><strong>Archivos PHP desconocidos<\/strong> en carpetas donde no deber\u00edan existir, especialmente en <code>wp-content\/uploads<\/code>.<\/li>\n<li><strong>Usuarios administradores nuevos<\/strong> que nadie cre\u00f3.<\/li>\n<li><strong>Alertas de Google Safe Browsing<\/strong>, Search Console, antivirus o proveedores de hosting.<\/li>\n<li><strong>Resultados SEO contaminados<\/strong>: t\u00edtulos y descripciones en otros idiomas, p\u00e1ginas indexadas con spam, enlaces ocultos.<\/li>\n<li><strong>Consumo excesivo de CPU o memoria<\/strong> en el servidor.<\/li>\n<li><strong>Env\u00edo masivo de correos spam<\/strong> desde el dominio.<\/li>\n<li><strong>Archivos modificados recientemente<\/strong> sin intervenci\u00f3n leg\u00edtima.<\/li>\n<li><strong>Errores 500, pantallas blancas o ca\u00eddas intermitentes<\/strong>.<\/li>\n<li><strong>Reglas sospechosas en <code>.htaccess<\/code><\/strong> o scripts inyectados en cabeceras y pies de p\u00e1gina.<\/li>\n<\/ul>\n<p>Conviene distinguir entre infecci\u00f3n y vulnerabilidad. La vulnerabilidad es la puerta floja; la infecci\u00f3n es el intruso dentro. Tapar la puerta sin sacar al intruso es una estrategia admirablemente in\u00fatil, como cerrar el paraguas despu\u00e9s de meterse al r\u00edo.<\/p>\n<h2 id=\"antes\">Antes de limpiar: tres verdades inc\u00f3modas<\/h2>\n<p>La limpieza de malware en WordPress no debe hacerse con prisa. La prisa aqu\u00ed tiene dedos torpes. Borra pruebas, rompe dependencias, deja puertas traseras y convierte una infecci\u00f3n reparable en una restauraci\u00f3n ca\u00f3tica.<\/p>\n<h3>1. No restaures una copia antigua sin investigar<\/h3>\n<p>Restaurar un backup puede funcionar, s\u00ed. Pero si no sabes cu\u00e1ndo empez\u00f3 la infecci\u00f3n, quiz\u00e1 est\u00e1s recuperando una versi\u00f3n que ya estaba comprometida. Adem\u00e1s, si la causa fue un plugin vulnerable o una contrase\u00f1a robada, el atacante podr\u00eda volver a entrar en cuesti\u00f3n de horas. Restaurar sin corregir es barrer ceniza mientras el incendio sigue en la cocina.<\/p>\n<h3>2. No borres archivos al azar<\/h3>\n<p>Hay c\u00f3digo leg\u00edtimo que parece sospechoso. Funciones como <code>base64_decode<\/code>, <code>eval<\/code>, <code>gzinflate<\/code>, <code>str_rot13<\/code> o <code>shell_exec<\/code> pueden aparecer en malware, pero tambi\u00e9n en herramientas v\u00e1lidas, aunque algunas sean se\u00f1ales de alarma claras seg\u00fan el contexto. El an\u00e1lisis debe hacerse mirando ubicaci\u00f3n, fecha de modificaci\u00f3n, propietario del archivo, contenido y relaci\u00f3n con el resto del sistema.<\/p>\n<h3>3. No conf\u00edes en una sola herramienta<\/h3>\n<p>Los esc\u00e1neres son \u00fatiles, pero no infalibles. Wordfence, Sucuri SiteCheck, MalCare, VirusTotal, ImunifyAV, ClamAV o las herramientas del hosting pueden detectar patrones conocidos. Sin embargo, un malware nuevo o bien ofuscado puede pasar como un pez oscuro bajo una barca. Combina an\u00e1lisis autom\u00e1tico con revisi\u00f3n manual.<\/p>\n<p>  <strong>Nota profesional:<\/strong> si el sitio gestiona pagos, datos sanitarios, informaci\u00f3n sensible o credenciales de usuarios, la infecci\u00f3n puede tener implicaciones legales y de cumplimiento normativo. En esos casos conviene documentar el incidente, preservar evidencias y consultar con especialistas en ciberseguridad o protecci\u00f3n de datos.<\/p>\n<h2 id=\"paso1\">Paso 1: poner el sitio en cuarentena \ud83e\uddef<\/h2>\n<p>Lo primero no es limpiar. Es contener. Un sitio infectado puede seguir da\u00f1ando visitantes, enviando spam o propagando malware. Debes reducir el impacto mientras trabajas.<\/p>\n<p>Acciones recomendadas:<\/p>\n<ul>\n<li><strong>Activa un modo mantenimiento real<\/strong>, preferiblemente desde el servidor o el hosting, no desde un plugin comprometido.<\/li>\n<li><strong>Bloquea temporalmente el acceso p\u00fablico<\/strong> mediante autenticaci\u00f3n b\u00e1sica HTTP, restricci\u00f3n por IP o reglas del servidor si el caso es grave.<\/li>\n<li><strong>Desactiva tareas autom\u00e1ticas sospechosas<\/strong> si detectas env\u00edo de spam o actividad an\u00f3mala intensa.<\/li>\n<li><strong>Suspende formularios vulnerables<\/strong> o integraciones externas que puedan estar siendo abusadas.<\/li>\n<li><strong>Notifica al hosting<\/strong> si hay consumo elevado, bloqueo de correo o alertas de seguridad.<\/li>\n<\/ul>\n<p>Si tienes una tienda WooCommerce o un sitio con alta actividad, la decisi\u00f3n duele. Cerrar temporalmente parece perder dinero; mantenerlo abierto puede perder confianza. Y la confianza, a diferencia del tr\u00e1fico, no siempre vuelve cuando le pones un anuncio.<\/p>\n<h2 id=\"paso2\">Paso 2: crear una copia completa del sitio infectado \ud83d\udcbe<\/h2>\n<p>Aunque suene contradictorio, antes de eliminar malware debes guardar una copia del estado infectado. No para restaurarla en producci\u00f3n, sino para an\u00e1lisis, trazabilidad y recuperaci\u00f3n de elementos leg\u00edtimos si algo sale mal.<\/p>\n<p>La copia debe incluir:<\/p>\n<ul>\n<li>Todos los archivos del sitio: n\u00facleo de WordPress, <code>wp-content<\/code>, plugins, temas, uploads, archivos ocultos y configuraciones.<\/li>\n<li>Base de datos completa en formato SQL.<\/li>\n<li>Registros del servidor: access logs, error logs, logs de FTP\/SFTP, logs del panel de hosting si est\u00e1n disponibles.<\/li>\n<li>Lista de usuarios WordPress y usuarios del servidor.<\/li>\n<li>Informaci\u00f3n de versiones: WordPress, PHP, MySQL\/MariaDB, plugins y temas.<\/li>\n<\/ul>\n<p>Guarda esta copia fuera del servidor infectado. Si es posible, usa un entorno local o staging aislado para analizar. Trabajar directamente en producci\u00f3n puede ser necesario en emergencias, pero no es lo ideal. Es como operar un reloj mientras sigue dando la hora en una torre p\u00fablica: se puede, pero cada movimiento se oye demasiado.<\/p>\n<h2 id=\"paso3\">Paso 3: identificar el tipo de malware y el alcance de la infecci\u00f3n \ud83d\udd0d<\/h2>\n<p>No todo malware busca lo mismo. Algunos quieren robar credenciales. Otros desean insertar enlaces SEO. Otros crean puertas traseras para volver. Otros convierten tu servidor en una humilde f\u00e1brica de spam, ese sue\u00f1o empresarial que nadie pidi\u00f3.<\/p>\n<table>\n<thead>\n<tr>\n<th>Tipo de infecci\u00f3n<\/th>\n<th>Se\u00f1ales comunes<\/th>\n<th>D\u00f3nde suele esconderse<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Redirecciones maliciosas<\/td>\n<td>Visitantes enviados a dominios extra\u00f1os, sobre todo desde m\u00f3vil o tr\u00e1fico de buscadores<\/td>\n<td><code>.htaccess<\/code>, <code>functions.php<\/code>, base de datos, JavaScript inyectado<\/td>\n<\/tr>\n<tr>\n<td>Spam SEO<\/td>\n<td>P\u00e1ginas indexadas con casinos, medicamentos, enlaces ocultos o texto en otros idiomas<\/td>\n<td><code>wp_posts<\/code>, <code>wp_options<\/code>, plantillas del tema, archivos PHP modificados<\/td>\n<\/tr>\n<tr>\n<td>Backdoors<\/td>\n<td>Reinfecci\u00f3n tras limpiar, archivos con nombres parecidos a leg\u00edtimos, usuarios admin ocultos<\/td>\n<td><code>wp-content\/uploads<\/code>, <code>mu-plugins<\/code>, plugins falsos, <code>wp-config.php<\/code><\/td>\n<\/tr>\n<tr>\n<td>Phishing<\/td>\n<td>Carpetas con p\u00e1ginas falsas de bancos, correo o pasarelas de pago<\/td>\n<td>Subdirectorios p\u00fablicos, uploads, carpetas con nombres aleatorios<\/td>\n<\/tr>\n<tr>\n<td>Mailer spam<\/td>\n<td>IP bloqueada, cola de correo enorme, quejas de proveedores<\/td>\n<td>Scripts PHP sueltos, plugins vulnerables, formularios abusados<\/td>\n<\/tr>\n<tr>\n<td>Cryptominer o consumo abusivo<\/td>\n<td>CPU alta, procesos extra\u00f1os, lentitud persistente<\/td>\n<td>Servidor, cron jobs, archivos ejecutables, scripts PHP persistentes<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3>Herramientas \u00fatiles para el diagn\u00f3stico<\/h3>\n<ul>\n<li><strong>Google Search Console:<\/strong> revisa \u201cProblemas de seguridad\u201d, \u201cAcciones manuales\u201d e indexaci\u00f3n de URLs extra\u00f1as.<\/li>\n<li><strong>Sucuri SiteCheck:<\/strong> escaneo externo para detectar malware visible, listas negras y redirecciones.<\/li>\n<li><strong>VirusTotal:<\/strong> an\u00e1lisis de URLs y archivos concretos con m\u00faltiples motores.<\/li>\n<li><strong>Wordfence o MalCare:<\/strong> escaneo interno desde WordPress, \u00fatil si el panel a\u00fan es confiable.<\/li>\n<li><strong>WP-CLI:<\/strong> excelente para verificar checksums, usuarios, plugins y temas desde consola.<\/li>\n<li><strong>Comandos del servidor:<\/strong> <code>find<\/code>, <code>grep<\/code>, <code>stat<\/code> y revisi\u00f3n de logs.<\/li>\n<\/ul>\n<p>Si tienes acceso SSH, puedes buscar archivos PHP modificados recientemente:<\/p>\n<pre>find . -type f -name \"*.php\" -mtime -15 -print<\/pre>\n<p>Tambi\u00e9n puedes buscar funciones com\u00fanmente asociadas con c\u00f3digo ofuscado:<\/p>\n<pre>grep -RIn --include=\"*.php\" \"base64_decode\\|eval(\\|gzinflate\\|str_rot13\\|shell_exec\\|passthru\\|assert(\" .<\/pre>\n<p>Pero atenci\u00f3n: estos comandos no dictan sentencia. Se\u00f1alan lugares donde mirar. Un buen an\u00e1lisis no funciona como una guillotina, sino como una lupa.<\/p>\n<h2 id=\"paso4\">Paso 4: limpiar archivos del n\u00facleo de WordPress \ud83e\uddf1<\/h2>\n<p>El n\u00facleo de WordPress es relativamente f\u00e1cil de verificar porque sus archivos oficiales son p\u00fablicos y tienen checksums. Si el malware modific\u00f3 archivos como <code>wp-settings.php<\/code>, <code>wp-load.php<\/code>, <code>index.php<\/code> o archivos dentro de <code>wp-admin<\/code> y <code>wp-includes<\/code>, lo m\u00e1s seguro es reemplazarlos por copias limpias.<\/p>\n<h3>Opci\u00f3n recomendada: reinstalar el n\u00facleo de WordPress<\/h3>\n<p>Desde el panel, si puedes acceder y conf\u00edas m\u00ednimamente en el entorno:<\/p>\n<ul>\n<li>Ve a <strong>Escritorio &gt; Actualizaciones<\/strong>.<\/li>\n<li>Haz clic en <strong>Reinstalar la versi\u00f3n actual<\/strong>.<\/li>\n<\/ul>\n<p>Desde WP-CLI:<\/p>\n<pre>wp core verify-checksums\nwp core download --force --locale=es_ES<\/pre>\n<p>El comando <code>wp core verify-checksums<\/code> compara los archivos del n\u00facleo con los oficiales de WordPress.org. Si muestra modificaciones en archivos core, no intentes \u201carreglar l\u00ednea por l\u00ednea\u201d salvo que tengas una raz\u00f3n muy concreta. Reemplaza.<\/p>\n<h3>Archivos que debes revisar con especial cuidado<\/h3>\n<ul>\n<li><code>index.php<\/code> en la ra\u00edz.<\/li>\n<li><code>wp-config.php<\/code>.<\/li>\n<li><code>.htaccess<\/code> en Apache o reglas equivalentes en Nginx.<\/li>\n<li><code>wp-settings.php<\/code>, <code>wp-load.php<\/code> y archivos de <code>wp-includes<\/code>.<\/li>\n<li>Archivos ocultos como <code>.user.ini<\/code>, <code>php.ini<\/code> o <code>.well-known<\/code> si contienen instrucciones extra\u00f1as.<\/li>\n<\/ul>\n<p>El archivo <code>wp-config.php<\/code> merece atenci\u00f3n especial. No debes reemplazarlo sin conservar credenciales de base de datos, salts, prefijo de tablas y configuraciones leg\u00edtimas. Busca l\u00edneas que carguen archivos remotos, c\u00f3digo ilegible, llamadas a <code>eval<\/code>, inclusiones sospechosas o definiciones ajenas a WordPress.<\/p>\n<p>Un <code>wp-config.php<\/code> limpio suele contener configuraci\u00f3n clara. Un archivo infectado a veces parece escrito por una impresora pose\u00edda: cadenas largas, caracteres sin sentido y una confianza excesiva en ocultar lo evidente.<\/p>\n<h2 id=\"paso5\">Paso 5: revisar plugins, temas y la carpeta uploads \ud83e\udde9<\/h2>\n<p>En WordPress, los plugins y temas son poderosos. Esa es su virtud y su peligro. Cada extensi\u00f3n a\u00f1ade funcionalidad, pero tambi\u00e9n superficie de ataque. Un plugin abandonado puede ser una invitaci\u00f3n con mantel blanco para un atacante automatizado.<\/p>\n<h3>Plugins: eliminar, reinstalar, actualizar<\/h3>\n<p>Haz una lista completa de plugins activos e inactivos. Luego:<\/p>\n<ol>\n<li><strong>Elimina plugins inactivos<\/strong>. Si no se usan, no deben estar ah\u00ed.<\/li>\n<li><strong>Reinstala plugins desde fuentes oficiales<\/strong>, no sobreescribas a ciegas una versi\u00f3n sospechosa.<\/li>\n<li><strong>Actualiza todo lo que tenga actualizaci\u00f3n disponible<\/strong>.<\/li>\n<li><strong>Revisa plugins premium<\/strong> descargados de sitios no oficiales. Los llamados \u201cnulled\u201d son una ruleta rusa con interfaz bonita.<\/li>\n<li><strong>Comprueba vulnerabilidades conocidas<\/strong> en bases como WPScan Vulnerability Database, Patchstack o Wordfence Intelligence.<\/li>\n<\/ol>\n<p>Con WP-CLI puedes ver plugins instalados:<\/p>\n<pre>wp plugin list<\/pre>\n<p>Y reinstalar un plugin concreto desde el repositorio oficial:<\/p>\n<pre>wp plugin install nombre-del-plugin --force<\/pre>\n<h3>Temas: no olvides el tema inactivo<\/h3>\n<p>Muchos atacantes modifican <code>functions.php<\/code> del tema activo, pero tambi\u00e9n pueden esconderse en temas inactivos. Conserva solo:<\/p>\n<ul>\n<li>El tema activo.<\/li>\n<li>Un tema oficial de respaldo actualizado, como Twenty Twenty-Four o similar.<\/li>\n<li>El tema hijo si realmente se usa.<\/li>\n<\/ul>\n<p>Revisa especialmente:<\/p>\n<ul>\n<li><code>functions.php<\/code><\/li>\n<li><code>header.php<\/code><\/li>\n<li><code>footer.php<\/code><\/li>\n<li><code>404.php<\/code><\/li>\n<li>Archivos PHP con nombres raros o fechas recientes.<\/li>\n<\/ul>\n<h3>Uploads: donde no deber\u00eda vivir PHP<\/h3>\n<p>La carpeta <code>wp-content\/uploads<\/code> deber\u00eda contener im\u00e1genes, PDFs, v\u00eddeos y archivos multimedia. No deber\u00eda contener scripts PHP ejecutables. Si encuentras archivos <code>.php<\/code> dentro de uploads, m\u00edralos con enorme sospecha.<\/p>\n<p>Busca archivos PHP en uploads:<\/p>\n<pre>find wp-content\/uploads -type f -name \"*.php\" -print<\/pre>\n<p>Tambi\u00e9n revisa extensiones camufladas:<\/p>\n<pre>find wp-content\/uploads -type f \\( -name \"*.php*\" -o -name \"*.phtml\" -o -name \"*.phar\" \\) -print<\/pre>\n<p>Una buena medida de endurecimiento es impedir la ejecuci\u00f3n de PHP en uploads. En Apache, dentro de <code>wp-content\/uploads\/.htaccess<\/code>, puedes usar:<\/p>\n<pre>&lt;FilesMatch \"\\.php$\"&gt;\n  Require all denied\n&lt;\/FilesMatch&gt;<\/pre>\n<p>En Nginx, la regla se aplica en la configuraci\u00f3n del servidor, por ejemplo denegando ejecuci\u00f3n PHP en <code>\/wp-content\/uploads\/<\/code>. Cada hosting tiene su forma; lo importante es el principio: las im\u00e1genes no necesitan hablar PHP.<\/p>\n<h2 id=\"paso6\">Paso 6: limpiar la base de datos de WordPress \ud83d\uddc4\ufe0f<\/h2>\n<p>La base de datos es la memoria del sitio. Y como toda memoria, puede guardar cosas que uno preferir\u00eda olvidar. Muchos ataques insertan JavaScript malicioso, iframes ocultos, enlaces spam, usuarios falsos, opciones alteradas o contenido invisible para administradores pero visible para Google.<\/p>\n<p>  <strong>Advertencia:<\/strong> antes de modificar la base de datos, crea una copia SQL. Un error en una consulta puede borrar contenido leg\u00edtimo. Aqu\u00ed no hay papelera elegante ni bot\u00f3n de arrepentimiento.<\/p>\n<h3>Tablas que debes revisar<\/h3>\n<ul>\n<li><code>wp_posts<\/code>: entradas, p\u00e1ginas, revisiones, productos, custom post types.<\/li>\n<li><code>wp_postmeta<\/code>: metadatos donde algunos constructores visuales guardan contenido serializado.<\/li>\n<li><code>wp_options<\/code>: opciones del sitio, widgets, transients, configuraciones de plugins.<\/li>\n<li><code>wp_users<\/code> y <code>wp_usermeta<\/code>: usuarios y roles.<\/li>\n<li><code>wp_comments<\/code>: spam, enlaces, scripts o iframes.<\/li>\n<\/ul>\n<p>Ten en cuenta que el prefijo puede no ser <code>wp_<\/code>. Algunos sitios usan prefijos personalizados como <code>abc123_<\/code>. No asumas; verifica en <code>wp-config.php<\/code>.<\/p>\n<h3>Qu\u00e9 buscar en la base de datos<\/h3>\n<p>Patrones frecuentes:<\/p>\n<ul>\n<li><code>&lt;script<\/code><\/li>\n<li><code>iframe<\/code><\/li>\n<li><code>display:none<\/code><\/li>\n<li><code>base64_decode<\/code><\/li>\n<li>Dominios desconocidos.<\/li>\n<li>Enlaces a casinos, medicamentos, sorteos, criptomonedas o sitios acortadores.<\/li>\n<li>C\u00f3digo JavaScript ofuscado.<\/li>\n<\/ul>\n<p>Consulta orientativa para buscar scripts en entradas:<\/p>\n<pre>SELECT ID, post_title\nFROM wp_posts\nWHERE post_content LIKE '%&lt;script%';<\/pre>\n<p>Para buscar iframes:<\/p>\n<pre>SELECT ID, post_title\nFROM wp_posts\nWHERE post_content LIKE '%iframe%';<\/pre>\n<p>Para revisar opciones sospechosas:<\/p>\n<pre>SELECT option_name, option_value\nFROM wp_options\nWHERE option_value LIKE '%&lt;script%'\n   OR option_value LIKE '%base64%'\n   OR option_value LIKE '%iframe%';<\/pre>\n<p>Pero cuidado con los constructores visuales, formularios, p\u00edxeles de anal\u00edtica y herramientas leg\u00edtimas de marketing. No todo script es veneno. La diferencia entre medicina y t\u00f3xico, como sab\u00eda cualquier boticario antiguo, est\u00e1 en la dosis y en la intenci\u00f3n.<\/p>\n<h3>El peligro del contenido serializado<\/h3>\n<p>WordPress y muchos plugins guardan datos serializados en la base de datos. Si editas manualmente una cadena serializada y cambias la longitud de un texto sin ajustar el contador, puedes romper configuraciones enteras. Para reemplazos masivos, usa herramientas que respeten serializaci\u00f3n, como WP-CLI:<\/p>\n<pre>wp search-replace 'dominio-malicioso.com' '' --all-tables<\/pre>\n<p>Primero ejecuta en modo simulaci\u00f3n:<\/p>\n<pre>wp search-replace 'dominio-malicioso.com' '' --all-tables --dry-run<\/pre>\n<h2 id=\"paso7\">Paso 7: revisar usuarios, contrase\u00f1as y permisos \ud83d\udd10<\/h2>\n<p>Despu\u00e9s de limpiar archivos y base de datos, toca revisar qui\u00e9n tiene llaves. Porque ser\u00eda bastante po\u00e9tico \u2014y bastante absurdo\u2014 restaurar la casa y dejar al ladr\u00f3n sentado en el sof\u00e1.<\/p>\n<h3>Usuarios de WordPress<\/h3>\n<p>Revisa todos los administradores. Elimina cuentas desconocidas. Cambia contrase\u00f1as de:<\/p>\n<ul>\n<li>Todos los usuarios administradores.<\/li>\n<li>Editores con permisos amplios.<\/li>\n<li>Cuentas de soporte o agencias antiguas.<\/li>\n<li>Usuarios FTP\/SFTP.<\/li>\n<li>Panel de hosting.<\/li>\n<li>Base de datos.<\/li>\n<li>Correo asociado al dominio.<\/li>\n<li>APIs externas conectadas al sitio.<\/li>\n<\/ul>\n<p>Desde WP-CLI:<\/p>\n<pre>wp user list --role=administrator<\/pre>\n<p>Tambi\u00e9n puedes forzar restablecimiento de contrase\u00f1as o cambiar una concreta:<\/p>\n<pre>wp user update nombre_usuario --user_pass='NuevaContrase\u00f1aMuySegura'<\/pre>\n<p>Usa contrase\u00f1as largas, \u00fanicas y generadas por un gestor. Activa autenticaci\u00f3n en dos factores para administradores. No es paranoia; es cerrar la segunda cerradura cuando sabes que alguien ya intent\u00f3 entrar por la primera.<\/p>\n<h3>Permisos de archivos y propietarios<\/h3>\n<p>Los permisos dependen del hosting, pero como regla general:<\/p>\n<ul>\n<li>Directorios: <code>755<\/code><\/li>\n<li>Archivos: <code>644<\/code><\/li>\n<li><code>wp-config.php<\/code>: <code>600<\/code> o <code>640<\/code> si el servidor lo permite<\/li>\n<\/ul>\n<p>Evita permisos <code>777<\/code>. Dar escritura total al mundo es una filosof\u00eda de vida interesante para un monasterio, no para un servidor web.<\/p>\n<p>Comandos orientativos:<\/p>\n<pre>find . -type d -exec chmod 755 {} \\;\nfind . -type f -exec chmod 644 {} \\;\nchmod 600 wp-config.php<\/pre>\n<p>Consulta siempre las recomendaciones de tu proveedor, especialmente en servidores con configuraciones espec\u00edficas de usuario\/grupo.<\/p>\n<h2 id=\"paso8\">Paso 8: buscar backdoors, cron jobs y mecanismos de persistencia \ud83d\udd73\ufe0f<\/h2>\n<p>El malware profesional no solo entra: aprende a quedarse. Una puerta trasera permite reinfectar el sitio aunque hayas borrado los archivos visibles. Es la semilla bajo la tierra quemada.<\/p>\n<h3>Lugares comunes de persistencia en WordPress<\/h3>\n<ul>\n<li><code>wp-content\/mu-plugins<\/code>: los must-use plugins se cargan autom\u00e1ticamente y muchos propietarios ni saben que existen.<\/li>\n<li><code>wp-content\/uploads<\/code>: scripts PHP camuflados entre im\u00e1genes.<\/li>\n<li><code>wp-content\/plugins<\/code>: carpetas con nombres parecidos a plugins leg\u00edtimos.<\/li>\n<li><code>wp-content\/themes<\/code>: archivos modificados en temas activos o inactivos.<\/li>\n<li><code>.htaccess<\/code>: redirecciones condicionales por user-agent, referer o dispositivo.<\/li>\n<li><code>.user.ini<\/code>: directivas PHP que cargan archivos maliciosos con <code>auto_prepend_file<\/code>.<\/li>\n<li>Cron jobs del sistema o WP-Cron.<\/li>\n<li>Usuarios administradores ocultos o recreados autom\u00e1ticamente.<\/li>\n<\/ul>\n<h3>Revisar WP-Cron<\/h3>\n<p>WordPress usa un sistema de tareas programadas llamado WP-Cron. Algunos plugins leg\u00edtimos lo usan para mantenimiento, publicaciones programadas o sincronizaciones. El malware tambi\u00e9n puede usarlo para regenerarse.<\/p>\n<p>Con WP-CLI:<\/p>\n<pre>wp cron event list<\/pre>\n<p>Busca hooks desconocidos, nombres aleatorios o tareas vinculadas a plugins que ya no existen.<\/p>\n<h3>Revisar cron del servidor<\/h3>\n<p>Si tienes acceso al sistema:<\/p>\n<pre>crontab -l<\/pre>\n<p>Y seg\u00fan permisos, revisa cron global:<\/p>\n<pre>ls -la \/etc\/cron.*<\/pre>\n<p>En hosting compartido quiz\u00e1 no tengas acceso a todo. En ese caso, pide al proveedor que revise procesos, tareas programadas, env\u00edos de correo y scripts sospechosos en tu cuenta.<\/p>\n<h2 id=\"paso9\">Paso 9: actualizar y endurecer WordPress despu\u00e9s de limpiar \u2699\ufe0f<\/h2>\n<p>Una vez eliminado el malware, empieza el trabajo menos vistoso y m\u00e1s importante: cerrar la causa. Aqu\u00ed se separan los arreglos cosm\u00e9ticos de la seguridad real. Una web limpia pero no endurecida es una puerta reci\u00e9n pintada sin cerradura.<\/p>\n<h3>Actualiza todo<\/h3>\n<ul>\n<li>WordPress core.<\/li>\n<li>Plugins.<\/li>\n<li>Temas.<\/li>\n<li>Versi\u00f3n de PHP.<\/li>\n<li>Dependencias del servidor si lo administras t\u00fa.<\/li>\n<\/ul>\n<p>WordPress publica actualizaciones de seguridad con frecuencia cuando se detectan vulnerabilidades. Mantener versiones antiguas por \u201cestabilidad\u201d puede tener sentido durante unos d\u00edas de prueba; mantenerlas durante meses es nostalgia peligrosa.<\/p>\n<h3>Elimina lo innecesario<\/h3>\n<p>Menos componentes, menos riesgo. Desinstala plugins redundantes, temas viejos, scripts de prueba, copias comprimidas dentro del public_html y archivos como <code>backup.zip<\/code>, <code>old-site<\/code>, <code>test.php<\/code> o <code>adminer.php<\/code> si no son necesarios. Muchos ataques empiezan en restos arqueol\u00f3gicos del sitio.<\/p>\n<h3>Configura claves de seguridad nuevas<\/h3>\n<p>Regenera las salts de WordPress desde el generador oficial:<\/p>\n<p><a href=\"https:\/\/api.wordpress.org\/secret-key\/1.1\/salt\/\" target=\"_blank\" rel=\"noopener\">https:\/\/api.wordpress.org\/secret-key\/1.1\/salt\/<\/a><\/p>\n<p>Copia las nuevas claves en <code>wp-config.php<\/code>. Esto cerrar\u00e1 sesiones activas y obligar\u00e1 a iniciar sesi\u00f3n de nuevo.<\/p>\n<h3>Desactiva la edici\u00f3n de archivos desde el panel<\/h3>\n<p>A\u00f1ade en <code>wp-config.php<\/code>:<\/p>\n<pre>define('DISALLOW_FILE_EDIT', true);<\/pre>\n<p>Esto no impide que un atacante con acceso al servidor modifique archivos, pero reduce el da\u00f1o si compromete una cuenta administradora de WordPress.<\/p>\n<h3>Configura un firewall de aplicaciones web<\/h3>\n<p>Un WAF puede bloquear patrones de ataque antes de que lleguen a WordPress. Opciones populares:<\/p>\n<ul>\n<li>Cloudflare WAF.<\/li>\n<li>Sucuri Firewall.<\/li>\n<li>Wordfence Firewall.<\/li>\n<li>Reglas ModSecurity gestionadas por el hosting.<\/li>\n<\/ul>\n<p>No todos los firewalls son iguales. Un WAF bien configurado es como un portero atento; uno mal configurado es un se\u00f1or dormido junto a una cuerda de terciopelo.<\/p>\n<h3>Protege el acceso al administrador<\/h3>\n<ul>\n<li>Activa autenticaci\u00f3n en dos factores.<\/li>\n<li>Limita intentos de inicio de sesi\u00f3n.<\/li>\n<li>Usa contrase\u00f1as \u00fanicas y robustas.<\/li>\n<li>Evita usuarios llamados <code>admin<\/code>.<\/li>\n<li>Restringe <code>wp-admin<\/code> por IP si el equipo es peque\u00f1o y estable.<\/li>\n<li>Revisa sesiones activas y desconecta las sospechosas.<\/li>\n<\/ul>\n<h3>Cabeceras de seguridad recomendadas<\/h3>\n<p>Dependiendo del sitio, puedes aplicar cabeceras HTTP como:<\/p>\n<ul>\n<li><code>Strict-Transport-Security<\/code><\/li>\n<li><code>X-Content-Type-Options<\/code><\/li>\n<li><code>X-Frame-Options<\/code> o <code>Content-Security-Policy frame-ancestors<\/code><\/li>\n<li><code>Referrer-Policy<\/code><\/li>\n<li><code>Permissions-Policy<\/code><\/li>\n<li><code>Content-Security-Policy<\/code>, con pruebas cuidadosas para no romper scripts leg\u00edtimos<\/li>\n<\/ul>\n<p>La Content Security Policy puede ayudar a mitigar inyecciones JavaScript, pero debe implementarse con prudencia. Una CSP demasiado estricta rompe funcionalidades; una demasiado permisiva queda como un cartel de \u201cprohibido pasar\u201d en una puerta abierta.<\/p>\n<h2 id=\"paso10\">Paso 10: verificar la limpieza y solicitar revisi\u00f3n a buscadores \u2705<\/h2>\n<p>Despu\u00e9s de limpiar, no basta con mirar la portada y respirar. Hay que verificar desde varios \u00e1ngulos: navegador, servidor, buscadores, logs y herramientas externas.<\/p>\n<h3>Lista de verificaci\u00f3n posterior<\/h3>\n<ul>\n<li>Escanea de nuevo con herramientas internas y externas.<\/li>\n<li>Revisa que no existan redirecciones sospechosas en m\u00f3vil, escritorio, tr\u00e1fico org\u00e1nico y acceso directo.<\/li>\n<li>Comprueba p\u00e1ginas clave: inicio, entradas, productos, checkout, login, sitemap y robots.txt.<\/li>\n<li>Revisa el c\u00f3digo fuente en busca de scripts desconocidos.<\/li>\n<li>Consulta logs recientes para detectar peticiones repetidas a archivos sospechosos.<\/li>\n<li>Verifica que no se regeneren archivos eliminados.<\/li>\n<li>Comprueba que el correo del dominio no siga enviando spam.<\/li>\n<li>Revisa Search Console en busca de URLs indexadas que no pertenecen al sitio.<\/li>\n<\/ul>\n<h3>Solicitar revisi\u00f3n en Google Search Console<\/h3>\n<p>Si Google marc\u00f3 tu sitio con problemas de seguridad:<\/p>\n<ol>\n<li>Entra en Google Search Console.<\/li>\n<li>Selecciona la propiedad afectada.<\/li>\n<li>Ve a <strong>Seguridad y acciones manuales<\/strong>.<\/li>\n<li>Abre <strong>Problemas de seguridad<\/strong>.<\/li>\n<li>Describe qu\u00e9 encontraste, qu\u00e9 limpiaste y qu\u00e9 medidas tomaste para evitar reinfecci\u00f3n.<\/li>\n<li>Solicita revisi\u00f3n.<\/li>\n<\/ol>\n<p>No escribas \u201cya est\u00e1 arreglado\u201d y nada m\u00e1s. Explica con claridad: archivos reemplazados, plugins actualizados, backdoors eliminados, contrase\u00f1as cambiadas, WAF activado. Google no necesita poes\u00eda; necesita evidencias. La poes\u00eda ya la ponemos nosotros en sobrevivir al incidente.<\/p>\n<h2 id=\"prevencion\">C\u00f3mo evitar que WordPress vuelva a infectarse \ud83c\udf31<\/h2>\n<p>La prevenci\u00f3n no es una tarea \u00fanica, sino una disciplina. Menos heroica que limpiar malware a medianoche, s\u00ed, pero infinitamente m\u00e1s rentable. En seguridad web, el mantenimiento constante es el personaje aburrido que salva la historia.<\/p>\n<h3>Rutina mensual m\u00ednima<\/h3>\n<ul>\n<li>Actualizar WordPress, plugins y temas.<\/li>\n<li>Revisar usuarios administradores.<\/li>\n<li>Comprobar copias de seguridad y hacer una restauraci\u00f3n de prueba ocasional.<\/li>\n<li>Analizar el sitio con un esc\u00e1ner de malware.<\/li>\n<li>Revisar logs de acceso y errores.<\/li>\n<li>Eliminar plugins o temas que ya no se usan.<\/li>\n<li>Comprobar el estado en Search Console.<\/li>\n<\/ul>\n<h3>Copias de seguridad bien dise\u00f1adas<\/h3>\n<p>Un backup \u00fatil debe ser:<\/p>\n<ul>\n<li><strong>Autom\u00e1tico<\/strong>, no dependiente de la memoria humana.<\/li>\n<li><strong>Frecuente<\/strong>, seg\u00fan el ritmo del sitio.<\/li>\n<li><strong>Externo<\/strong>, almacenado fuera del servidor principal.<\/li>\n<li><strong>Versionado<\/strong>, con varias fechas disponibles.<\/li>\n<li><strong>Probado<\/strong>, porque un backup no restaurable es decoraci\u00f3n digital.<\/li>\n<\/ul>\n<p>Para un blog peque\u00f1o, una copia diaria puede bastar. Para WooCommerce, quiz\u00e1 necesites copias en tiempo real o incrementales. No es lo mismo perder una entrada que perder pedidos, clientes y facturaci\u00f3n.<\/p>\n<h3>Elegir plugins con criterio<\/h3>\n<p>Antes de instalar un plugin, revisa:<\/p>\n<ul>\n<li>\u00daltima actualizaci\u00f3n.<\/li>\n<li>Compatibilidad con tu versi\u00f3n de WordPress.<\/li>\n<li>N\u00famero de instalaciones activas.<\/li>\n<li>Historial de vulnerabilidades y respuesta del desarrollador.<\/li>\n<li>Reputaci\u00f3n del proveedor.<\/li>\n<li>Necesidad real: si solo a\u00f1ade una funci\u00f3n menor, quiz\u00e1 no compensa.<\/li>\n<\/ul>\n<p>El ecosistema WordPress es generoso, casi exuberante. Tambi\u00e9n es una selva. Hay flores, frutos y alg\u00fan bicho con demasiadas patas.<\/p>\n<h3>Hosting seguro y actualizado<\/h3>\n<p>Un buen hosting no convierte un sitio vulnerable en invencible, pero ayuda mucho. Busca proveedores que ofrezcan:<\/p>\n<ul>\n<li>Versiones modernas de PHP.<\/li>\n<li>Aislamiento entre cuentas.<\/li>\n<li>Backups externos.<\/li>\n<li>WAF o reglas ModSecurity.<\/li>\n<li>Escaneo de malware.<\/li>\n<li>Soporte t\u00e9cnico competente.<\/li>\n<li>Acceso SSH\/SFTP seguro.<\/li>\n<li>Registros disponibles para auditor\u00eda.<\/li>\n<\/ul>\n<p>El hosting barato no siempre sale caro, pero cuando sale caro lo hace con entusiasmo.<\/p>\n<h2>Checklist r\u00e1pida para limpiar malware en WordPress \ud83e\uddfe<\/h2>\n<table>\n<thead>\n<tr>\n<th>Fase<\/th>\n<th>Acci\u00f3n<\/th>\n<th>Estado<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Contenci\u00f3n<\/td>\n<td>Poner el sitio en mantenimiento, bloquear accesos maliciosos y avisar al hosting<\/td>\n<td>\u2610<\/td>\n<\/tr>\n<tr>\n<td>Backup<\/td>\n<td>Copiar archivos, base de datos y logs antes de modificar<\/td>\n<td>\u2610<\/td>\n<\/tr>\n<tr>\n<td>Diagn\u00f3stico<\/td>\n<td>Escanear con varias herramientas y revisar s\u00edntomas<\/td>\n<td>\u2610<\/td>\n<\/tr>\n<tr>\n<td>N\u00facleo<\/td>\n<td>Verificar checksums y reinstalar WordPress core<\/td>\n<td>\u2610<\/td>\n<\/tr>\n<tr>\n<td>Plugins<\/td>\n<td>Eliminar innecesarios, reinstalar desde fuentes oficiales y actualizar<\/td>\n<td>\u2610<\/td>\n<\/tr>\n<tr>\n<td>Temas<\/td>\n<td>Revisar tema activo, tema hijo e inactivos; borrar lo que no se use<\/td>\n<td>\u2610<\/td>\n<\/tr>\n<tr>\n<td>Uploads<\/td>\n<td>Buscar PHP, phtml, phar y bloquear ejecuci\u00f3n<\/td>\n<td>\u2610<\/td>\n<\/tr>\n<tr>\n<td>Base de datos<\/td>\n<td>Eliminar scripts, iframes, spam SEO y opciones maliciosas<\/td>\n<td>\u2610<\/td>\n<\/tr>\n<tr>\n<td>Usuarios<\/td>\n<td>Eliminar administradores desconocidos y cambiar contrase\u00f1as<\/td>\n<td>\u2610<\/td>\n<\/tr>\n<tr>\n<td>Persistencia<\/td>\n<td>Revisar cron, mu-plugins, .htaccess, .user.ini y backdoors<\/td>\n<td>\u2610<\/td>\n<\/tr>\n<tr>\n<td>Hardening<\/td>\n<td>Activar 2FA, WAF, permisos correctos y desactivar edici\u00f3n de archivos<\/td>\n<td>\u2610<\/td>\n<\/tr>\n<tr>\n<td>Validaci\u00f3n<\/td>\n<td>Escanear de nuevo, revisar logs y solicitar revisi\u00f3n a Google si aplica<\/td>\n<td>\u2610<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Errores comunes al eliminar malware en WordPress<\/h2>\n<p>Hay errores que se repiten tanto que parecen tradici\u00f3n. Conviene nombrarlos para no rendirles culto.<\/p>\n<ul>\n<li><strong>Limpiar solo lo que ve el navegador:<\/strong> muchas infecciones se activan solo para ciertos pa\u00edses, dispositivos o visitantes procedentes de Google.<\/li>\n<li><strong>Confiar en un \u00fanico plugin de seguridad:<\/strong> ayuda, pero no sustituye una auditor\u00eda.<\/li>\n<li><strong>No cambiar contrase\u00f1as:<\/strong> si las credenciales fueron robadas, el atacante puede volver sin explotar ninguna vulnerabilidad.<\/li>\n<li><strong>No revisar la base de datos:<\/strong> el malware no siempre vive en archivos.<\/li>\n<li><strong>Ignorar los logs:<\/strong> all\u00ed suele estar la primera pista de entrada.<\/li>\n<li><strong>Mantener plugins premium nulled:<\/strong> ahorrar en licencias para pagar limpiezas de emergencia es una econom\u00eda bastante creativa.<\/li>\n<li><strong>No corregir permisos:<\/strong> especialmente en servidores donde el usuario web puede escribir demasiado.<\/li>\n<li><strong>No comprobar reinfecci\u00f3n:<\/strong> algunos backdoors regeneran archivos al cabo de minutos u horas.<\/li>\n<\/ul>\n<h2>\u00bfCu\u00e1ndo conviene contratar a un especialista?<\/h2>\n<p>Puedes limpiar muchos casos si tienes conocimientos t\u00e9cnicos, acceso al servidor y paciencia. Pero hay situaciones en las que llamar a un profesional no es lujo, sino prudencia:<\/p>\n<ul>\n<li>El sitio procesa pagos o datos sensibles.<\/li>\n<li>Hay reinfecci\u00f3n despu\u00e9s de varias limpiezas.<\/li>\n<li>El hosting ha suspendido la cuenta.<\/li>\n<li>Google mantiene la advertencia tras solicitar revisi\u00f3n.<\/li>\n<li>Hay m\u00faltiples sitios infectados en el mismo servidor.<\/li>\n<li>No tienes acceso a logs o consola.<\/li>\n<li>El malware afecta al servidor, no solo a WordPress.<\/li>\n<\/ul>\n<p>Un especialista no solo borra archivos. Reconstruye la historia del ataque: por d\u00f3nde entr\u00f3, qu\u00e9 toc\u00f3, qu\u00e9 dej\u00f3 preparado y c\u00f3mo impedir que vuelva. Esa diferencia importa. Mucho.<\/p>\n<h2>Un sitio limpio no es el final: es el principio de una web m\u00e1s seria<\/h2>\n<p>Limpiar un sitio WordPress infectado con malware es una mezcla extra\u00f1a de cirug\u00eda, arqueolog\u00eda y trabajo detectivesco. Hay que cortar sin da\u00f1ar, excavar sin romper y sospechar sin perder la cabeza. En el proceso uno aprende una verdad sencilla: la seguridad no es un plugin, ni una contrase\u00f1a larga, ni una copia de seguridad aislada. Es un sistema de h\u00e1bitos.<\/p>\n<p>WordPress, bien mantenido, es una plataforma s\u00f3lida, flexible y capaz. WordPress abandonado, en cambio, se convierte en una ciudad sin farolas: no necesariamente peligrosa por naturaleza, pero demasiado amable con quien prefiere moverse en la oscuridad.<\/p>\n<p>Si tu sitio ha sido infectado, no lo tomes solo como una cat\u00e1strofe. T\u00f3malo como una auditor\u00eda brutalmente honesta. El malware se\u00f1ala grietas que quiz\u00e1 llevaban a\u00f1os esperando. Limpia, actualiza, endurece, documenta y vigila. La web, como un jard\u00edn despu\u00e9s de la tormenta, puede volver a florecer. Pero esta vez conviene no olvidar d\u00f3nde crec\u00eda la maleza. \ud83c\udf3f<\/p>\n<\/article>\n<p><\/main><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00bfC\u00f3mo limpiar un sitio WordPress infectado con malware paso a paso? \ud83d\udee1\ufe0f Hay pocas escenas<\/p>\n","protected":false},"author":1,"featured_media":3763,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-3764","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-mantenimiento"],"_links":{"self":[{"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/posts\/3764","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/comments?post=3764"}],"version-history":[{"count":1,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/posts\/3764\/revisions"}],"predecessor-version":[{"id":3765,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/posts\/3764\/revisions\/3765"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/media\/3763"}],"wp:attachment":[{"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/media?parent=3764"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/categories?post=3764"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mantenimientoweb.pro\/blog\/wp-json\/wp\/v2\/tags?post=3764"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}