Hola gente! Hace un año que no escribo nada. Voy a utilizar este evento cósmico de excusa para revivir el blog, o al menos intentarlo. ¿Alguien aún lee blogs?
Se me ocurrió el tema del título porque es una pregunta que veo constantemente en foros, grupos de Facebook, Quora y conversaciones en bares… bueno no, esto último no, al menos no los que yo frecuento.
Como todos saben WordPress es el CMS mas utilizado en el mundo y por este tema es un target tentador para cualquier ataque automatizado. Cuando te infectan un WordPress en general, el 99% de las veces, no es algo personal contra vos y tu sitio. Son ataques de fuerza bruta o escaneos en busca de vulnerabilidades. Cuando encuentran una versión de WP, theme o plugin con una vulnerabilidad conocida atacan, infectan y hacen lo suyo. No pienses que es culpa de tu hosting, salvo raras excepciones, no lo es.
Todo lo que les voy a contar es experiencia propia. Como soy parte de una empresa de Hosting he tenido que hacer esto infinidad de veces desde que existe WordPress. (bueno, en realidad desde que salió PhpNuke je)
Hay otras formas de hacerlo, mucho de lo que acá les cuento lo hago por consola por ejemplo. En este caso voy a tratar de explicarlo para que lo pueda hacer cualquier vía FTP.
Ok, vamos al grano
Para realizar todas las taréas tenes que tener algo de conocimientos básicos sobre desarrollo web o al menos haber instalado WordPress a mano. Si sos el usuario final de un WordPress que solo entra a publicar cosas mejor consultá con quién te realizó la web. Estos pasos son genéricos y curan casi todas las infecciones. Demás está decir que por las dudas de que hagas mierda todo mas de lo que está hagas un buen backup.
Cambiar la contraseña de tu panel de control y/o FTP
Este es un gran «por las dudas» o «mas vale prevenir», existe una posibilidad de que el hack haya sido por una clave insegura o filtrada. Ante la duda lo mejor es cambiar la clave del panel de control que te brinde tu hosting y si tenes cuentas de FTP adicionales también cambiales la clave.
Desactivá el acceso público a la web
Si tu web lleva varios días infectada es probable que Google ya haya marcado como peligroso tu sitio. Hay que decirle a Google desde la Search Console que tu sitio ya no está infectado. Como esto tarda es bueno que sea lo primero que hagas, para ello necesitas limpiar el sitio y como eso puede demorar vamos a evitar que se pueda ver. Lo que debes hacer es eliminar el index.php y el archivo .htaccess (crea una copia de este si tiene algo mas que lo que mete WordPress) de la raiz de tu sitio y crear un index.html o index.php en blanco. Si te das maña podes hacer un html con los dátos básicos de contacto de la web infectada para que un eventual visitante no vea la página en blanco. Una vez hecho todo esto ya le podes pedir a Google que vuelva a revisar tu sitio en busca de malware.
Elimina todos los archivos de WordPress excepto wp-content
Esto lo podes hacer utilizando FTP pero es lento porque son muchos archivos chiquitos. Lo ideal es hacerlo desde el panel de control de tu hosting si te dan un administrador de archivos. Elimina todos los archivos de la raiz y los directorios wp-admin y wp-includes. Con esto nos cargamos cualquier infectado que haya habido en esas carpetas.
Limpieza de wp-content
Este es el único directorio que conservamos porque tiene los archivos que no son genéricos de cualquier instalación. Themes, plugins, modificaciones, archivos subidos, etc. Los últimos hackeos que vi son ultra virulentos por lo que podes tener archivos desconocidos con malware, archivos conocidos con malware inyectado, incluso hasta archivos que simulan ser imágenes con malware infectado. Revisá que en la raiz de wp-content no tengas ningún archivo desconocido y mira dentro de los conocidos que no haya nada extraño. Normalmente solo deberías tener un index.php con un comentario.
Es el turno de /plugins. Toma nota de todos los plugins instalados, y bajalos del repositorio de WordPress uno por uno. En tu escritorio hacete una nueva carpeta /plugins y descomprimi todos los archivos que bajaste ahí dentro. Luego solo te queda eliminar /plugins la del sitio infectado y subir la nueva de tu escritorio.
Ahora vamos con la carpeta /themes. Si el theme que estas usando es del repositorio o comprado y no tiene modificaciones caseras tenes volverlo a descargar y reemplazarlo integramente, como hicimos con los plugins. Si lo modificaste sin usar un child entonces tenes que mirar uno por uno los archivos para ver que dentro no haya malware. Es bastante obvio cuando están infectados aunque no sepas mucho de PHP.
Si tenes un child, que es lo mas correcto cuando modificas el theme original, tambien debes revisar todos tus archivos a mano en busca del bicho.
Si tenes themes que no estas usando es un buen momento para borrarlos, tenerlos ahí es un riesgo innecesario.
Por último solo nos queda la carpeta /uploads, dependiendo de la cantidad de contenidos del sitio puede ser mas o menos tedioso. El trabajo a realizar aquí es ir entrando uno por uno en todos los años y meses buscando archivos que no corresponden. Normalmente algún php entre muchas imágenes. Puede ser útil ordenar por fecha y/o por extensión los archivos dentro de cada carpeta para detectar rápidamente.
Por último, si tenes un buen hosting, como Bee por ejemplo, cof cof… dentro del cPanel vas a encontrar un scanner de malware. Correlo para ver si detecta algún archivo infectado que se te haya pasado por alto.
Algunos ajustes sobre la base de datos
Este paso también es un «por si las dudas». Primero vamos a ingresar al panel de nuestro hosting y cambiamos la clave del usuario de la base de datos. No la pierdas! Si estás canchero con phpmyadmin otra cosa que podés hacer es ver si en la tabla de usuarios no aparece algun invitado desconocido. Si hay, borralo.
Puesta en marcha
Este es el paso mas «placentero» para mi, es el momento de volver a poner en marcha todo el quilombo que hicimos mas arriba. Lo primero es descargar la última versión de WordPress. Si no te da confianza un upgrade de golpe podes buscar en el repo la versión anterior de WordPress que hayas tenido en la web.
Descomprimí el archivo descargado en tu escritorio y eliminá la carpeta wp-content. No la vamos a necesitar. Renombrá el archivo wp-config-sample.php a wp-config.php y completá los datos de la base de datos, no olvides que cambiaste la clave. Usa el link que viene en el archivo para generar unas llaves salt nuevas y pegalas. Por último si tus tablas tenían un prefijo distinto al estandard no olvides cambiarlo ya que si no lo haces cuando quieras ver tu sitio va a querer instalar un nuevo WordPress.
Una vez terminado con el wp-config.php es momento de subir todos los los archivos al hosting. Al finalizar si todo salió bien deberías poder ingresar a tu /wp-admin.
Últimos pasos
Una vez dentro de backend de WordPress lo primero que debes hacer es cambiar la clave a TODOS los usuarios con permisos de administrador, editor y autor. Pone la clave mas cojuda que puedas, la mejor clave es la que no te podes acordar. Utilizá un gestor de contraseñas como LastPass.
Revisa todas las entradas y páginas para que no haya cosas raras. En varias ocasiones me he encontrado con páginas o posteos intervenidos con links a sitios de venta de medicamentos y otras bizarreadas. Todo lo que no sea el contenido habitual de tu web volalo a la mierda. Si quedó algún plugin que pide actualización, hacela.
Ya deberíamos contar con un sitio limpio. Vas a tener que controlarlo de cerca unas semanas, ya que si quedó algún chobi se puede volver a infectar. A veces puede pasar por ejemplo que tengas algún plugín o theme desactualizado y no soportado, por más que pongas uno no infectado este podría tener vulnerabilidades conocidas y volver a infectarse. Si es el caso, googlea acerca de ese plugin o theme y trata de arreglarlo y/o reemplazarlo.
The end
Espero les haya sido de utilidad este post, la verdad que me tomó un buen tiempo escribirlo. Si tienen alguna consulta, usen los comentarios, trataré de responderlas en tiempo y forma.