¿Tu WordPress ha sido hackeado? Limpia tu web a mano
En el artículo ¿Sospechas que tu web ha sido hackeada? Todo lo que debes hacer te contábamos paso a paso como salvar tu web después de un ataque. Utilizábamos WordFence como herramienta definitiva y escudo contra todo el malware. Y no es una mala opción.
Pero hay veces que no es suficiente. Hay veces que no puedes acceder a tu web porque ha sido bloqueada. Hay veces que no puedes esperar horas a que termine el análisis de WordFence. Pero no todo está perdido. Cuando no puedes fiarte de ninguna otra herramienta, te damos las pautas para que puedas hacer una limpieza pormenorizada de manera manual y efectiva.
Antes de realizar este proceso es recomendable realizar una copia de seguridad de los datos de la web. Por si se nos va la mano y borramos algo más de la cuenta.
Nota: Para realizar este proceso necesitas ejecutar comandos desde terminal. Así que necesitarás acceso SSH o descargarte la web para trabajar en tu ordenador en local.
Descarga tu versión de WordPress
Lo primero que necesitas es saber qué versión estás usando. Puedes descubrirla fácilmente mirando en el fichero wp-includes/version.php. Verás algo parecido a esto:
Ahora que ya sabes tu versión, puedes buscarla en este listado y descargarla.
Despliega la nueva copia de WordPress
Tendrás que subir la carpeta «wordpress» que hay dentro del fichero que te has descargado a la raíz de tu hosting.
Descomprime el fichero en la carpeta raíz del WordPress que vas a limpiar. Ahora deberías tener una carpeta llamada wordpress dentro de tu wordpress.
Si tu web está abierta al público te recomendamos que ocultes el directorio desde .htacces como te explicábamos en este artículo.
Borra los ficheros que no deberían estar
Entra la nueva carpeta wordpress y ejecuta el siguiente comando:
cd wordpress diff -qr . ../. | grep "Sólo en ../."
Si el listado es demasiado largo siempre puedes filtrarlo buscando por carpetas, o directamente eliminando carpetas de la búsqueda para que puedas revisarlo más cómodamente (por ejemplo, puedes filtrar solo por la carpeta de plugins, o quitarla. Y lo mismo con las carpetas de languages). Simplemente añade esta instrucción al final de la función anterior para encadenar filtros.
| grep -v "palabra a excluir"
El comando diff mostrará un listado con todos los ficheros del directorio actual (.) y tu web (../.) y todos sus subdirectorios. El comando grep filtrará el listado para que únicamente veamos los que tienes en tu web que no están en una versión nueva de WordPress.
Esta revisión puede ser un poco peliaguda, porque obviamente tu web tiene instalados plugins, temas y otros ficheros que pueden estar alojados y que no sean maliciosos. Deberás revisarlos y confirmar cuales son peligrosos y cuales son fiables.
Aquí tienes unos cuantos trucos que deberían servirte:
– En la raíz no deberías tener ficheros .php que no sean los de WordPress. Si tienes ficheros de este tipo, probablemente sean maliciosos (¡Ojo, no siempre! Revísalos. Por ejemplo WordFence crea un fichero wordfence-waf.php)
– Revisa en la raíz que no existan ficheros .html . Lo más probable es que si no son ficheros viejos que ya no se usan, sean ficheros malintencionados. Bórralos igualmente para quedarte tranquilo.
– En la carpeta wp-includes y wp-admin no deberías encontrar ningún fichero que no esté en WordPress. Sospecha de todo lo que aparezca ahí.
– En la carpeta wp-content tampoco debería haber ningún fichero, aunque en wp-content/plugins y wp-content/themes es donde si que encontrarás todos los plugins y temas que tengas instalados.
– Revisa que los plugins que tienes sean verídicos, si ves alguna carpeta o fichero sospechoso en la carpeta de plugins no dudes en eliminarlo
– Este es un buen momento para eliminar los temas que no estés usando. Si no los usas, solo están ahí para quedarse obsoletos y provocar agujeros de seguridad… así que, como ya estás en ello, borra todos los twenty*. Ya los reinstalarás el día que los necesites.
Puede que algunos de los ficheros de tu web que son diferentes del WordPress original hayan sido vulnerados, así que, revisa los ficheros que no has borrado del fichero anterior y comprueba si no tienen código malicioso. Si lo encuentras, límpialo sin borrar el fichero. Normalmente es código añadido al principio o al final del fichero y se repite a lo largo de los ficheros de la web. Lo reconocerás en cuanto lo veas.
Cuando hayas limpiado todos los ficheros que tengas de más, es el momento de pasar al siguiente punto.
Aunque esta lista que te voy a decir no es un truco infalible, sospecha enseguida de estos ficheros porque pueden ser muy peligrosos:
– favicon.ico (o cualquier otro .ico que veas. Pueden ser ficheros encriptados que se hacen pasar por inocentes favicones)
– php.ini (si ningún programador ha dejado este fichero aquí, seguramente sea malintencionado. En un servidor sin la seguridad suficiente este fichero puede cambiar la configuración y seguridad de PHP)
– .htaccess (seguramente el único fichero htaccess que necesitas es el de la carpeta raíz. El resto probablemente se hayan creado para el mal)
Recuerda que no has borrado todos los ficheros. Algunos se han quedado (por ejemplo el .htaccess de la raíz)
Descubre qué ficheros han sido modificados
Repetiremos el truco anterior para comparar los ficheros de un WordPress original con nuestra web. En este caso lo que nos interesarán son los ficheros modificados.
diff -qr . ../. | grep "son distintos"
Depende de lo grande que sea el listado de ficheros que aparezca deberás copiar los ficheros de manera pormenorizada o en bloques. Siempre que sea posible intenta copiar los mínimos ficheros posibles. Aunque el código de WordPress no debería modificarse nunca… nunca se sabe que has podido instalar que haya hecho cosas inesperadas.
De todas maneras, aquí tienes algunos trucos que te vendrán bien:
– Los ficheros de la carpeta wp-admin no deberían modificarse, así que puedes directamente hacer un
cp -f wp-admin/*.php ../wp-admin/.
– Lo mismo ocurrirá con la carpeta wp-includes, así que sientete libre de copiar los ficheros
cp -f wp-includes/*.php ../wp-includes/.
– Como ya has revisado tus ficheros de la raíz borrando los que sobraban, puedes copiar los básicos de wordpress encima. Asegúrate de no copiar el fichero de ejemplo de wp-config para evitar subir ficheros inútiles
rm wp-config-sample.php cp -f *.php ../.
(ojo, no te olvides de revisar si alguno de ellos tiene algún cambio legítimo, por ejemplo index.php puede tener algún cambio en la dirección de las carpetas si tu web no está alojada en la raíz)
– Puedes ignorar la mayoría de los ficheros de idiomas .po y .mo, pueden tener cambios que se han realizado pero que no han afectado a la versión.
Ya has terminado con tu wordpress espejo, así que es hora de acabar con él.
cd .. rm -r wordpress rm wordpress*.zip
Recuerda que no has borrado todos los ficheros. Algunos se han quedado porque no estaban en el WordPress original (por ejemplo el .htaccess de la raíz o ficheros de validación de google o apple). Recuerda revisar todos estos ficheros y borrar todas las modificaciones peligrosas que encuentres dentro de ellos.
WordFence
Si has hecho todo bien, tu web ya debería estar limpia.
No obstante, ahora que la has dejado como recién horneada, es momento de entrar al backend y dejar que WordPress haga las labores de mantenimiento.
Si ya tienes acceso puedes instalar WordFence y que revise lo que has hecho. Si te has equivocado en algún fichero o se te ha escapado alguno, lo encontrará por tí. Y además, preparará todas las medidas de seguridad que te ya te contamos en su día. Ya se que habíamos dicho que no necesitábamos WordFence, y no vamos a quitarte mérito… Pero si podemos hacer una doble revisión, ¿Por qué vamos a negarnos?.
Por último y, aunque parezca mentira, lo más importante: Es momento de actualizar WordPress, temas y plugins. Ya te han hackeado una vez. Y seguro que tus contraseñas eran seguras. Así que lo más probable es que tengas alguna vulnerabilidad en tus plugins que se han ido quedando obsoletos con el tiempo. Pero oye, que no lo digo yo, en cuanto acabe el análisis de WordFence, ¡va a ser él quien te lo diga!
Lo que deberías hacer ahora es revisar el artículo de buenas prácticas y asegurarte que proteges bien tu web para la próxima vez.