Cómo reparar un WordPress atacado (Hacked)
Uno de los objetivos más populares a la hora de infectar una web es conseguir enviar correos electrónicos desde ese servidor. Las personas que se dedican a hacer spam buscan vulnerabilidades que les permitan subir ficheros desde los cuales hacer sus envíos masivos. Ésto se debe a que el servidor de correo electrónico confía en el servidor web y le permite enviar correos sin necesidad de identificarse como un usuario con una cuenta de correo en el sistema. Precisamente las infecciones del código fuente de la página web se suponen al detectar muchos envíos en poco tiempo. Entonces, automáticamente la empresa de alojamiento web corta preventivamente esa capacidad y el usuario recibe un advertencia para que revise su web.
Ya hablé sobre porqué es WordPress un objetivo predilecto para ataques y sobre la importancia de tener WordPress actualizado.
Sea como sea, llega un momento en que han infectado tu WordPress y quieres saber cómo repararlo / limpiarlo. Éstos son esencialmente los pasos, luego entraré en detalle de algunos:
- descargar la bbdd
- descargar los ficheros
- actualizar WP
- actualizar plugins
- buscar ‘cosas raras’ en los ficheros decargados
- asegurarse de que no están corruptos en el servidor
- limpiar los que sigan corruptos tras las actualizaciones
- aprender la lección
Si quieres puedo ocuparme de ésto por ti.
Pide sin compromiso un presupuesto por limpiar un WordPress infectado. Mi tarifa son 25 €/h y generalmente puedo hacerlo en 3-4 horas.
Copia de seguridad: pasos 1 y 2
Eso tendrías que hacerlo con cierta frecuencia. Existen varios plugins que realizan backups periódicamente. Ahora tu solución podría ser tan sencilla como volver a un punto anterior. Para muchas páginas web que no almacenan datos, esta solución no implicaría ninguna pérdida; y para otras que detectasen rápidamente la infección, la pérdida podría ser mínima según la frecuencia de las copias de respaldo.
En todo caso, aunque la página web esté infectada ahora, sigue siendo un buen momento para hacerlo porque estás a punto de actualizar y quizá hacer cambios delicados y podría darse la circunstancia de que aún funcione peor y quieras volver a empezar desde el punto de partida actual.
Mantener el WordPress actualizado: pasos 3 y 4
Esta también es una buena práctica. Así dificultas la cantidad de vulnerabilidades conocidas que pueden explotar para infectar tu página Web.
Llegados a este punto, existen muchos ficheros que pueden haber sido infectados y no vas a ponerte a abrirlos todos y mirar qué contienen. Actualizar el sistema puede ser una buena manera de limpiar ficheros en carpetas recónditas.
En esa línea, lo más práctico es entrar por FTP y borrar directamente las carpetas que sabes que sólo deberían contener ficheros propios de WordPress y subir una instalación limpia de éste. De esa manera sabes que wp-admin y wp-includes ya está como deberían estar.
Lo mismo puedes hacer con los plugins y con tu theme si puedes volver a descargarlo.
Limpieza de ficheros infectados: pasos 5, 6 y 7
Ésta la parte más delicada y más entretenida que requiere de paciencia, picardía, sentido común y conocimientos técnicos.
Por un lado hay que buscar ficheros sospechosos por su nombre o su ubicación pero ¿qué ubicaciones son improbables?
Encontrar ficheros PHP dentro de la carpeta wp-uploads es incorrecto con bastantes posibilidades, de no ser que estén ahí para gestionar algún tipo de escalado de imágenes. Lo mejor antes de borrar, abrir y mirar.
Pero a veces no son tan evidentes, por ejemplo el fichero index.php es muy habitual y en ocasiones no llamaría la atención salvo por estar dentro de una carpeta js o css. Generalmente no se tiende a mezclar ficheros, para eso las carpetas tienen nombres tan descriptivos, así que también son candidatos a ser borrados pero conviene asegurarse porque podrían estar destinados a compactar los ficheros js o css y en ese caso serían legítimos.
Un fichero 404.php situado en la raíz o en la carpeta del theme tampoco llama la atención, salvo si pesa -digamos- 80Kb. No está de más revisarlos.
Por otro lado hay que buscar ficheros sospechosos por su contenido pero ¿qué contenido es extraño?
Existen algunas funciones de PHP de uso legítimo pero estadísticamente infrecuente como create_function, eval, base64_decode, … o variables como $GLOBALS y que sin embargo son las principales herramientas utilizadas por el código malicioso para ejecutarse. Así que encontrar dónde se utilizan y ver el contexto en el que se encuentran, es un buen comienzo. Por ejemplo, no hay nada de malo en $GLOBALS[‘sitename’] = “Albin Soft” mientras que $GLOBALS[‘ra544’]=Array(); es muy muy rarito sobre todo si hay cientos de repeticiones.
Algunas jugarretas que nos gastan es escribir el código malicioso en la primera línea del fichero pero precediéndolo por unos centenares de espacios en blanco para que no lo veas aunque abras el fichero a menos que percibas el inmenso scroll lateral y lo desplaces para ver qué aparece.