Cómo limpiar un sitio web o blog de WordPress pirateado

Publicado: 2021-02-16

Ya sea que su sitio web de WordPress haya sido pirateado y actualmente esté bajo control de daños, o si se está preparando para lo peor, este artículo lo guiará a través del proceso de limpieza de un sitio web de WordPress pirateado. El proceso está documentado en un formato paso a paso fácil de seguir para ayudarlo a lograr lo siguiente:

  • Recupere el control de su sitio web de WordPress
  • Identificar la fuente probable de la infección.
  • Encuentra la infección y el código malicioso
  • Elimine cualquier malware, puertas traseras y shells web
  • Elimine su dominio de cualquier lista de malware, como la base de datos de navegación segura de Google.
  • Prevenir una recurrencia

¿Está realmente pirateado su sitio web de WordPress pirateado?

Sitio web de WordPress pirateado

A veces, es bastante claro cuando un sitio de WordPress ha sido pirateado, por ejemplo, si su sitio web ha sido desfigurado. En otros casos, puede que no sea tan claro. Antes de embarcarse en un proceso de limpieza de WordPress, confirme que su sitio web de WordPress realmente ha sido pirateado y que no se trata de un problema técnico no relacionado. Lea el artículo sobre cómo verificar si mi WordPress está pirateado para determinar si su sitio web o blog fue pirateado o no.

Recupera el control

La recuperación del control comienza según la cantidad de acceso que haya perdido como resultado de un ataque. Por ejemplo, al obtener acceso a un servidor, un atacante puede rotar las credenciales para impedir que los usuarios legítimos accedan al servidor, o tal vez puede cambiar la contraseña de administrador de WordPress para evitar que un administrador de WordPress inicie sesión.

Si bien esto dependerá en gran medida de su configuración, lo más probable es que su proveedor de alojamiento pueda ayudarlo a recuperar el acceso a un entorno de alojamiento compartido o un servidor privado virtual (VPS) que ejecuta su sitio web. Si perdió el acceso al administrador de WordPress, siga la guía oficial de WordPress para restablecer su contraseña de administrador.

Haciendo una copia de seguridad

Incluso si tiene una solución de copia de seguridad de WordPress, haga una copia de seguridad del sitio web actual de WordPress. Hacer una copia de seguridad de WordPress en esta etapa es muy importante por varias razones, incluidas las siguientes.

  • Una copia de seguridad le permite analizar la infección en una etapa posterior,
  • Algunos proveedores de alojamiento pueden recurrir a la eliminación de sitios web pirateados como medida de precaución para evitar que propaguen malware o spam; dependiendo de su proveedor de alojamiento, esto puede suceder sin previo aviso.
  • Si actualmente no tiene una estrategia de copia de seguridad, es posible que pueda recuperar parte del contenido del sitio web de esta copia de seguridad antes de que las cosas empeoren.

Además, si está ejecutando WordPress en un servidor privado virtual (VPS), considere tomar una instantánea de toda la máquina virtual si es posible (tenga en cuenta que esto generalmente está asociado con un costo adicional). Cuando tome instantáneas, tenga en cuenta que si está utilizando volúmenes externos para alojar su instalación de WordPress (por ejemplo, almacenamiento conectado a la red), también debe tomar una copia de cualquier volumen que almacene la instalación principal de WordPress, wp-content , su base de datos MySQL , así como cualquier acceso al servidor web y registros de errores.

Restaurar desde una copia de seguridad

Si tiene una estrategia de copia de seguridad, ahora es el momento de ponerla en práctica. Suponiendo que tenga acceso a una copia de seguridad reciente, la restauración puede ser la forma más rápida de volver a estar en línea; sin embargo, no se equivoque, mientras que restaurar desde una copia de seguridad de su sitio de WordPress puede eliminar una infección y permitirle volver a estar operativo, no lo hace. resuelve por qué te hackearon en primer lugar.

Si su sitio web de WordPress fue pirateado como resultado de una vulnerabilidad explotada o una falla de seguridad, es un siguiente paso esencial para intentar averiguar qué sucedió (si es posible).

¿Qué pasa si no tengo una copia de seguridad o no puedo restaurar mi copia de seguridad correctamente?

Si no tiene una copia de seguridad, puede restaurar con éxito, dependiendo de la gravedad de la situación, es posible que desee poner su sitio web de WordPress en modo de mantenimiento para permitirle trabajar en la restauración de su sitio y dejar que los visitantes sepan que deben volver a consultar más tarde. Mientras tanto, continúe siguiendo el resto de esta guía. Al poner su sitio web en modo de mantenimiento, mediante el uso de wp_maintenance() 1 función, WordPress devolverá un código de estado HTTP 503. Un estado 503 indica a Google y otros rastreadores que algo salió mal en la página y que deben volver a consultar más tarde.

Una respuesta HTTP 503 es importante para el SEO, ya que evitará daños en las clasificaciones de búsqueda en caso de que su sitio web esté inactivo temporalmente. Para obtener más información sobre el código de estado HTTP 503 y su importancia en SEO, consulte el artículo de Yoast sobre el tema.

Identificar cómo WordPress fue hackeado

Una vez que su sitio esté respaldado, lo siguiente en la agenda es averiguar todo lo que pueda sobre lo que sucedió, es decir, qué debilidad de seguridad explotó el atacante para obtener acceso a su instalación de WordPress.

Comprobación de los registros de actividad, del servidor web y del servidor FTP

Si mantiene un registro de actividad de WordPress, este podría ser el mejor lugar para comenzar su análisis. Vea si puede identificar cualquier comportamiento sospechoso. Busque eventos de usuarios recién creados o cambios de contraseña de usuario. También verifique si se modificó algún WordPress, complementos o archivos de temas.

También debe echar un vistazo al servidor web, al servidor FTP y a los archivos de registro del sistema operativo para detectar comportamientos inusuales o sospechosos. Si bien esto puede ser un proceso algo abrumador, querrá comenzar verificando si hay tráfico extraño proveniente de una sola dirección IP. Puede hacer esto usando una variedad de scripts de shell de utilidades y de una sola línea. Para una vista en tiempo real de los registros de su servidor web, GoAccess puede ser útil.

Complementos y temas de WordPress no utilizados y obsoletos

Consulta la lista de complementos instalados, tanto desde el panel de control de WordPress como en el directorio /wp-content/plugins/ . ¿Se están utilizando todos los complementos de WordPress? ¿Están todos actualizados? Compruebe los temas y el directorio de temas /wp-content/themes/ también. Solo debe tener un tema instalado, el que está utilizando. Si está utilizando un tema secundario, tendrá dos directorios.

Código e instalaciones de WordPress sin usar

El código sobrante y sin usar es otro problema común. A veces, los desarrolladores y administradores de sistemas actualizan los archivos directamente en el servidor y realizan una copia de seguridad del archivo original con una extensión como .old , .orig o .bak . Los atacantes se aprovechan con frecuencia de esta mala práctica y las herramientas para buscar dichos archivos de copia de seguridad están ampliamente disponibles.

La forma en que esto funciona es cuando un atacante intenta acceder a archivos como index.php.old . Por lo general, los archivos .php están configurados para ser ejecutados por el intérprete de PHP, pero al agregar una extensión .old (u otra) al final del archivo, el servidor web entrega el archivo al usuario. Simplemente al poder adivinar el nombre de un archivo de copia de seguridad, un atacante puede descargar el código fuente que puede contener información confidencial, o puede proporcionarle pistas sobre qué explotar.

Un problema similar es retener instalaciones antiguas de WordPress. Cuando los administradores de sistemas reconstruyen sus sitios web, a veces dejan copias de instalaciones antiguas de WordPress en un subdirectorio /antiguo/ . Por lo general, estas instalaciones antiguas de WordPress aún serían accesibles a través de Internet y, por lo tanto, serían un objetivo atractivo para que un atacante aproveche las vulnerabilidades conocidas en versiones antiguas de WordPress junto con cualquier complemento.

Es recomendable eliminar cualquier código no utilizado, instalaciones de WordPress, complementos de WordPress, temas de WordPress y cualquier otro archivo antiguo o sin usar (recuerde que siempre puede recurrir a su copia de seguridad si necesita restaurar algo que eliminó accidentalmente). Su sitio web solo debe contener los archivos que necesita. Cualquier otra cosa que sea extra o no utilizada debe tratarse como una superficie de ataque adicional.

Usuarios y roles de WordPress

Verifique que se utilicen todos los usuarios de WordPress. ¿Hay nuevos sospechosos? Verifique que todos los roles estén intactos. Si sigue las pautas de usuarios y roles de WordPress, solo debe tener un usuario con un rol de administrador de WordPress.

Proveedores de alojamiento compartido

Si su WordPress se ejecuta en un proveedor de alojamiento compartido, la fuente del ataque podría ser otro sitio web que se ejecuta en el mismo servidor que el suyo. En este caso, el escenario más probable sería que el atacante hubiera logrado escalar sus privilegios. Luego, como consecuencia, obtenga acceso a todo el servidor y, a su vez, a su sitio web de WordPress. Si sospecha que se produjo un ataque de este tipo, el mejor recurso sería ponerse en contacto inmediatamente con su proveedor de alojamiento, después de hacer una copia de seguridad de su sitio web.

archivos .htaccess

Los archivos .htaccess (archivos de configuración del servidor HTTP Apache a nivel de directorio) también son un objetivo común para los piratas informáticos. Por lo general, se utilizan para redirigir a los usuarios a otros sitios web de spam, phishing o maliciosos. Verifique todos los archivos .htaccess en su servidor, incluso aquellos que no están siendo utilizados por WordPress. Algunas de las redirecciones pueden ser difíciles de detectar.

Preste especial atención a la configuración que redirige las solicitudes HTTP en función de cadenas de agentes de usuario específicas: los atacantes pueden estar apuntando a dispositivos específicos (por ejemplo, usuarios móviles) o incluso participar en Black Hat SEO configurando su servidor web para responder de manera diferente a los rastreadores de motores de búsqueda.

Si es posible, considere adoptar una configuración global en lugar de depender de los archivos .htaccess dentro del servidor Apache HTTP. Los archivos .htaccess no solo degradan el rendimiento, sino que abren su sitio web de WordPress a una variedad de vulnerabilidades de seguridad si un atacante alguna vez puede leer, o peor aún, escribir el contenido de estos archivos. Según la documentación del servidor Apache HTTP 2 , el uso de archivos .htaccess se puede deshabilitar por completo configurando la directiva AllowOverride en none en el archivo httpd.conf principal.

Comprobación de otros puntos de entrada

Hay varios otros puntos de entrada en un servidor web. Asegúrese de verificarlos todos, como los servidores FTP, SSH, el servidor web, etc.

Encuentra la infección de WordPress y el código malicioso

Antes de comenzar : un hack de WordPress generalmente implica la inserción de código en un tema, complemento o archivo central de WordPress. Por lo tanto, para proceder con una limpieza, debe sentirse cómodo modificando el código. Si no lo eres, contrata a profesionales de seguridad de WordPress.

Una vez que identifica el punto de entrada de los piratas informáticos, normalmente es relativamente fácil encontrar la infección. Aunque en caso de que aún no hayas encontrado la infección, existen varios métodos que puedes usar para encontrarla. Aquí hay algunos.

Comprobando qué archivos se modificaron en los últimos días

Idealmente, debería usar un complemento de monitor de archivos de WordPress que monitoree los archivos en su instalación de WordPress en busca de cambios y lo avise de inmediato. Si no tiene un complemento de Monitoreo de integridad de archivos (FIM), tendrá que buscar cambios en los archivos manualmente.

Si tiene acceso SSH a su servidor, verifique qué archivos en su sitio web de WordPress han cambiado recientemente. Por lo general, sería recomendable comenzar a buscar cambios en los últimos cinco días desde que se notó el ataque, ampliando su búsqueda según sea necesario. Para hacerlo, navegue hasta el directorio donde se encuentra su sitio web de WordPress y use el comando de búsqueda.

find .mtime -5 –ls

El comando anterior enumera (-ls) todos los archivos que se han modificado (.mtime) en los últimos cinco días (-5). Si la lista es demasiado larga, use el localizador menos para navegar y buscar en la lista con más facilidad.

find .mtime -5 –ls | less

Si recientemente actualizó un complemento o un tema, cualquier cambio de archivo relacionado aparecerá en los resultados de búsqueda. Los registros y los archivos de depuración también se actualizan con frecuencia, por lo que también aparecerán en sus resultados. Como resultado, es posible que deba realizar un filtrado exhaustivo de los resultados para encontrar cambios de archivo de interés. Tenga en cuenta que los complementos especializados, como el complemento Monitor de cambios de archivos de WordPress para WordPress, están diseñados específicamente para eliminar dichos falsos positivos automáticamente. El complemento está diseñado específicamente para WordPress y puede identificar un cambio de archivo desde un núcleo de WordPress, actualizaciones de complementos o temas, instalación o desinstalación.

Comprobación de todos los archivos HTML

En WordPress hay muy pocos archivos HTML y a los hackers les gusta aprovecharlos. Busque en su sitio web todos los archivos HTML y analice su contenido. Asegúrese de que todos los archivos HTML que tiene en su sitio web sean legítimos y sepa para qué se utilizan.

Una manera fácil de enumerar todos los archivos HTML en su directorio (y subdirectorios) de WordPress es usar el siguiente comando.

 
find . -type f -name '*.html' 

Buscando texto de infección

Si su sitio web ha sido desfigurado, o aparece algún texto en su sitio web como resultado de la infección, búsquelo con la herramienta grep. Por ejemplo, si ha visto el texto "hackeado por", navegue hasta el directorio raíz del sitio web y emita el siguiente comando.

grep –Ril "hacked by"

El comando anterior devolverá una lista de archivos que incluyen el contenido "pirateado por". Una vez que tenga la lista de archivos infectados, puede analizar el código y eliminar la infección.

¿Qué significan los interruptores grep?

  • -R indica a grep que busque recursivamente (busca en toda la estructura de directorios, incluidos todos los subdirectorios y enlaces simbólicos).
  • -i indica a grep que la búsqueda no debe distinguir entre mayúsculas y minúsculas (es decir, ignorar las mayúsculas del término de búsqueda). Esto es muy importante en entornos Linux/Unix, ya que, a diferencia de Windows, los sistemas de archivos de Linux distinguen entre mayúsculas y minúsculas.
  • -l indica a grep que debe devolver el nombre del archivo, en lugar del contenido del archivo. Cuando su sitio de WordPress es pirateado, este es otro código malicioso que debe buscar.

Además de la cadena obvia "hackeado por", a continuación hay una lista de frases de código y texto que se usan normalmente en los sitios web de WordPress pirateados. Puede usar la herramienta grep para buscar lo siguiente:

  • base64_decodificación
  • es_admin
  • evaluar
  • gzuncompress
  • pasar a través de
  • ejecutivo
  • shell_exec
  • afirmar
  • str_rot13
  • sistema
  • phpinfo
  • chmod
  • mkdir
  • abierto
  • cerrar
  • leer archivo

Una forma rápida de lograr esto usando grep es a través del siguiente comando grep que busca archivos de forma recursiva (sigue cualquier enlace simbólico), busca las cadenas que coinciden con la expresión regular PCRE especificada 3 y devuelve la coincidencia de texto, así como el número de línea donde ocurrió la coincidencia.

grep -RPn "(base64_decode|is_admin|eval|gzuncompress|passthru|exec|shell_exec|assert|str_rot13|system|phpinfo|chmod|mkdir|fopen|fclose|readfile) *\("

NOTA : parte de este código también se puede usar en código legítimo, así que analícelo correctamente y comprenda cómo se usa antes de marcar algo como una infección o pirateo.

Compare los archivos con una instalación original de WordPress

Este es un método de la vieja escuela y, aunque requiere algo de tiempo, funciona de maravilla. Compara los archivos de tu sitio web con los de un sitio web no manipulado. Por lo tanto, si tiene una copia de seguridad de su sitio web, compare el sitio web manipulado. De lo contrario, instale una nueva copia de WordPress y los complementos que tiene en el sitio web infectado en un host diferente y compárelos.

Hay varias herramientas que puede usar para comparar archivos. En este ejemplo, usamos una herramienta comercial llamada Beyond Compare, aunque existen varias alternativas gratuitas. A continuación se muestran algunas capturas de pantalla de una comparación de muestra.

Al comparar los directorios raíz de dos sitios web de WordPress, la herramienta destaca la diferencia en el contenido del archivo index.php , los nuevos archivos .htaccess y wp-config.php , y las diferencias en los subdirectorios.

Comparando el directorio raíz de dos sitios web de WordPress

Al hacer doble clic en el archivo index.php podemos ver cuáles son las diferencias.

index.php infectado en el sitio web de WordPress

¿Qué buscar en una comparación de archivos de WordPress?

Busque archivos que no sean parte del núcleo de WordPress. La mayoría de las infecciones agregan archivos a la raíz de la instalación de WordPress o al directorio wp-content . Si el hackeo es el resultado de un complemento vulnerable, es posible que los archivos del complemento hayan sido modificados.

Limpiar el hack de WordPress

Es hora de comenzar a limpiar siguiendo el procedimiento a continuación, una vez que conozca la fuente del hack de WordPress y haya encontrado la infección.

Encontrar la infección automáticamente con un servicio de WordPress

Si lo anterior parece demasiado difícil de manejar, no se desespere. Hay varios complementos y servicios de seguridad de WordPress que puede usar para escanear su sitio web en busca de malware y otras infecciones. Recomendamos los servicios de seguridad de WordPress de Malcare.

Sin embargo, tenga en cuenta que dichos complementos tienen una lista limitada de firmas de malware que buscan. Como tal, si el ataque que afectó a su sitio web de WordPress no es tan común, es posible que estos complementos no identifiquen la infección. No es raro que recibamos comentarios de los administradores de WordPress cuyo sitio web de WordPress fue víctima de un ataque de que los complementos de malware de WordPress no identificaron nada incorrecto.

La conclusión aquí es que los controles de seguridad efectivos implican tener varias capas de defensa y detección. Si bien el análisis manual es casi siempre la mejor manera de avanzar cuando puede hacerlo; estos complementos tampoco deben subestimarse: aún se pueden usar y serán útiles en algún momento.

Restaurar tu WordPress desde una copia de seguridad

Si tiene una copia de seguridad de su sitio web o blog de WordPress, restáurelo. Siempre es mucho más fácil que limpiar manualmente el código.

Cambiar todas las contraseñas, eliminar usuarios no utilizados y verificar los roles de los usuarios de WordPress

Cambie todas las contraseñas de todos sus usuarios y servicios, incluidos WordPress, CPanel, MySQL, FTP y su propia computadora personal. Verifique la lista de usuarios en su FTP, WordPress, MySQL y cualquier otro servicio para confirmar que todos los usuarios son legítimos. Si hay algún usuario que ya no se utiliza, elimínelo. Verifique que todos los usuarios de WordPress tengan los roles y permisos correctos.

Actualización del núcleo de WordPress, complementos, temas y otro software

Asegúrese de estar ejecutando la versión más actualizada de todo el software necesario para ejecutar su sitio web de WordPress. Esto no solo se limita a WordPress en sí mismo, sino que también se extiende a cualquier complemento, tema, así como parches del sistema operativo, PHP, MySQL y servidor web (por ejemplo, Apache HTTP Server o Nginx) y cualquier servidor FTP que pueda estar ejecutando.

Copia de seguridad de su sitio web de WordPress

Copia de seguridad del sitio web de WordPress

Una vez en esta etapa, antes de eliminar el código infectado real, haga una copia de seguridad de su sitio web de WordPress.

Eliminar la alerta de software malicioso de navegación segura de Google

Advertencia de malware de Google

Si su sitio web fue rechazado por Google Safe Browsing, puede solicitar una revisión de seguridad para eliminar la alerta.

Una vez que elimines el hack de WordPress…

Procesos de seguridad de WordPress

Felicitaciones, recuperó su sitio web de WordPress de un hackeo. Ahora debes asegurarte de que no vuelva a suceder. Aquí hay algunos consejos sobre lo que debe hacer:

  1. Instale un complemento de registro de actividad de WordPress para realizar un seguimiento de todo lo que sucede en su sitio web de WordPress.
  2. Si no tiene una solución de respaldo, obtenga una.
  3. Use un servicio de escaneo de seguridad de WordPress.
  4. Rote la base de datos y las contraseñas de administrador, y fuerce una fuerte seguridad de contraseña de WordPress.
  5. Mantenga siempre actualizado su WordPress, complementos de WordPress, temas y cualquier otro software que utilice.
  6. Elimine cualquier archivo no utilizado, como instalaciones antiguas de WordPress, complementos y temas de WordPress no utilizados (incluidos los temas predeterminados de WordPress no utilizados). Los componentes y el software no utilizados agregan una superficie de ataque innecesaria y lo ideal es que se eliminen.
  7. Siga nuestra guía de fortalecimiento de la seguridad de WordPress para asegurarse de solucionar todos los posibles problemas de seguridad en su sitio web.

Referencias utilizadas en este artículo [ + ]

Referencias utilizadas en este artículo
1 https://developer.wordpress.org/reference/functions/wp_maintenance/
2 http://httpd.apache.org/docs/current/howto/htaccess.html#when
3 https://regexr.com/5lpf0