Por qué borrar todo el núcleo de WordPress es la única forma de dormir tranquilo
Eran las 2:14 de la madrugada cuando me cayó el mensaje de un cliente desesperado en Santiago. Tenían una tienda en wordpress chile que facturaba unos ocho mil dólares semanales vendiendo repuestos. Google acababa de marcarles el dominio con la clásica pantalla roja de sitio engañoso. Habían perdido toda la pauta del día y el dueño estaba al borde de un ataque de nervios. Lo primero que me dijo fue: "Le pasé un plugin de seguridad, borró dos archivos infectados y dice que ya estamos limpios". Media hora después, el malware se había regenerado tres veces.
Ese es el error clásico. La gente cree que limpiar un sitio hackeado es como pasarle un trapo a una mesa sucia. No lo es. Tratar de "desinfectar" archivos del núcleo editados por un atacante línea por línea es una pérdida de tiempo ridícula y una garantía casi matemática de que te van a volver a entrar en 48 horas.
La ilusión de reparar archivos infectados
Los atacantes rara vez dejan una sola puerta trasera. Si lograron meterse hasta wp-includes/ o wp-admin/, no van a dejar un archivo llamado hacker.php para que Wordfence lo encuentre en diez segundos. Lo que hacen es inyectar funciones ofuscadas en base64 dentro de archivos legítimos como formatting.php o pluggable.php. A veces alteran una sola línea que evalúa código remoto solo cuando la petición viene de un User-Agent específico.
Muchos dueños de negocio apenas entienden de wordpress que es y para que sirve hasta que la pantalla se les pone en blanco o los redirige a portales de apuestas rusos. Creen que el núcleo es intocable. La realidad es que el núcleo es completamente desechable. La base de datos guarda tu contenido; tu carpeta de temas y plugins guarda tu diseño. Todo lo demás es código genérico que puedes y debes destruir sin dudar.
El procedimiento quirúrgico para reinstalar el núcleo
En GuardLabs no negociamos con archivos sospechosos. Si vemos que el núcleo fue vulnerado, aplicamos tierra quemada sobre los binarios oficiales. Si tienes acceso SSH, esto toma cinco minutos. Si estás limitado a cPanel o SFTP, te tomará quince. Pero no te saltes ningún paso.
Primero, el respaldo forense. Incluso si el sitio está vomitando spam, comprime todo y descárgalo a tu máquina local. Si necesitas hacer una autopsia después, vas a querer esos archivos intactos. Luego, aíslas lo irreemplazable: el archivo wp-config.php y la carpeta wp-content/.
Segundo: vas directo a la fuente oficial. Nada de repositorios raros. No necesitas ni tu wordpress.org login para bajarte los archivos limpios; basta con ir a la sección de wordpress download o escribir wordpress descargar para obtener el tarball o el zip de la versión exacta que tenías instalada. Si estabas en la versión 6.4.2, descargas exactamente la 6.4.2. No actualices de golpe a una versión mayor en medio de una infección activa porque vas a mezclar incompatibilidades de plugins con código malicioso.
Tercero: el borrado sin piedad. Borras completas las carpetas wp-admin y wp-includes. Borras todos los archivos .php de la raíz: index.php, wp-blog-header.php, wp-load.php, wp-settings.php, xmlrpc.php. Absolutamente todos, excepto tu wp-config.php e imágenes sueltas que hayas dejado por error. Una vez que la raíz queda vacía (solo con tu wp-config.php y wp-content/), descomprimes el núcleo limpio y lo pegas en su lugar.
Dónde se esconden cuando crees que ganaste
Aquí es donde la mayoría canta victoria antes de tiempo. Reinstalar el núcleo limpio soluciona únicamente el 40% del problema. El atacante sabe que tarde o temprano alguien va a sobreescribir wp-includes, así que deja copias de seguridad de su acceso en lugares que parecen inofensivos.
Me ha tocado ver backdoors disfrazados adentro de directorios temporales de wordpress elementor, camuflados en carpetas de caché CSS como supuestos scripts minificados. También he visto casos donde reemplazaron el archivo del wordpress logo en la pantalla de acceso con un SVG manipulado que inyectaba un script para capturar credenciales de administradores cuando intentaban ingresar desde el navegador o mediante la wordpress app del teléfono.
Si quieres probar la integridad de tus temas y plugins sin arriesgar tu servidor de producción, puedes clonar la base de datos y montar el proyecto en herramientas locales ligeras como wordpress studio o Local. Ahí puedes correr búsquedas con grep o WP-CLI para comparar sumas de verificación MD5 con el repositorio oficial sin saturar los recursos de tu hosting.
El archivo wp-config.php requiere una lectura manual, línea por línea. Los atacantes suelen meter llamadas al inicio del archivo, antes de la etiqueta <?php o escondidas cientos de espacios a la derecha de una línea legítima para que no las veas si tu editor de texto no tiene el ajuste de línea activado. Si ves algo sospechoso, regenera las llaves de seguridad (las "salts") de inmediato. Eso cierra todas las sesiones abiertas de cualquier usuario en el sistema.
Cerrar la puerta para que no vuelvan
Este wordpress trabajo de recuperación no termina cuando el sitio vuelve a cargar. De hecho, ese es apenas el punto de partida. Una vez que el núcleo está verificado y los archivos limpios están en su sitio, tienes que responder la pregunta más incómoda: ¿por dónde entraron?
El 90% de las veces la culpa es de un plugin abandonado hace tres años, un tema pirata descargado de un sitio de "recursos gratuitos" que traía una sorpresa adentro, o permisos de escritura pésimamente configurados en el servidor que permitían ejecutar archivos PHP directamente desde la carpeta de subidas (/wp-content/uploads/). Si no bloqueas la ejecución de PHP en uploads mediante tu servidor web (Nginx o Apache), tu núcleo nuevo no te va a salvar de la siguiente oleada de bots.
Desinfectar un sitio a fondo requiere disciplina quirúrgica, comparar hashes oficiales contra miles de archivos y auditar la base de datos en busca de administradores fantasmas o tareas cron maliciosas programadas para volver a descargar el payload a medianoche.
Si tu sitio web está comprometido, te genera pérdidas activas o no tienes la certeza de haber erradicado todas las puertas traseras del servidor, nosotros aplicamos a diario nuestra metodología de recuperación y blindaje para sitios WordPress hackeados en GuardLabs. Revisamos cada rincón del sistema, cerramos la vulnerabilidad raíz y dejamos tu plataforma limpia y monitoreada para que puedas volver a ocuparte de tu negocio sin miedo a despertar con sorpresas.