Aprendiendo de los errores!!. Wordpress y sus plugins ....

Enviado por christian el

Hoy contaré algo diferente. No será un post técnico al uso sino que será una reflexión/recreación de lo que me ha ocurrido hace unos días... esto que dices, no creo que me pase nunca esto hasta que.... pasa !!!

 

CONTEXTO

Os pongo un poquito en contexto. Como trabajo extra, gestiono unos pequeños sitios web de negocios locales. Estos pues tienen o plantillas html estáticas o pequeños #Drupal con muy poca info.

La cuestión es que junto con estos sitios web, pues en algún momento (no sé porqué) me pareció buena idea alojar también un Wordpress para ahorrarle costes a un cliente (sale más barato alojarlo uno mismo que contratar un hosting worpdress). Como condición ya había puesto que estaría "capado" (nada de ftp por ejemplo, ni actualizaciones automáticas) y que si o si tiene que tener siempre todos los plugins actualizados

 

EL ACONTECIMIENTO + EL CAMBIO DE GUIÓN

Qué ha ocurrido? Bueno pues si ya estás por aquí creo que ya te lo intuyes... Resulta que han entrado en el wordpress y han inyectado código malicioso y la web ha empezado a fallar.

A sí de primeras no me había preocupado tanto porque realmente es un sitio pequeño que no tiene información sensible ni tiene tampoco mucho tráfico, pero claro joe! te fastidia que alguien entre en tu "casa".

Hasta aquí todo bien no? Pues ahora viene el cambio de guión.... resulta que lo primero que hago cuando me avisa el cliente es bloquear el nginx para cerrar tráfico y cerrar puertos para bloquear cualquier conexión y me pongo a restaurar una copia de seguridad. Mi sorpresa es que al restaurar la copia sigo infectado

Cierto es que era una copia del día anterior, y digo bueno voy a coger una de la semana anterior; restauro y sigue infectada! Ya me empiezo a preocupar empiezo a recuperar copias antiguas... 

  • 2 semanas atrás -> infectada
  • 1 mes atrás -> infectada
  • 6 semanas atras -> infectada
  • 2 meses atrás infectada

En el momento que restauro la copia de hace 2 meses y veo que sigue estando infectado ya me empieza a cambiar la cara, no por el hecho de que lleve 2 meses infectado el wordpress, si no porque el cliente lleva 2 meses mínimo sin entrar en su web!! (y en teoría le iba dar caña....)

Aquí mis sentimientos ya eran entre enfado/frustación y preocupación porque tanto tiempo infectado el wordpress ya no sabes muy bien qué ha echo y qué ha podido afectar...

 

LA LIMPIEZA

Después de darme cuenta de que la única opción para poder restaurar el sitio era limpiar el código me he puesto a ello (después de unas cuantas palabras mal-sonantes .... jejeje). Aquí entra un poco la parte más técnica por lo que igual te puede interesar:

  1. Revisando los me había dado cuenta de que había errores de sintaxis en algunas funciones php por lo que me puse a revisar el código y lo encuentro a la primera. Veo algo que comienza con. "errorrpn" (silenciar errores en php) por lo que ya me empiezo a cargar código sin sentido. Puedes buscarlo en tu código con:

    grep -Rn 'errorpn' .
  2. Después de limpiar toda esa parte, he analizado un poco el código que había inyectado y el muy ...... lo había ofuscado y codificado por lo que tuve que buscar también otros sitios donde pudiera haberse inyectado. Puedes buscar este tipo de funciones con:

    # Es sospechoso pero no implica malicioso
    grep -Rn 'eval(' .
    grep -Rn 'base64_decode(' .
    
    # Esto ya es mas sospechoso...
    grep -Rn 'gzinflate(' .
    grep -Rn 'str_rot13(' .
    grep -R "error_reporting(0)" .
  3. Un buen rato después de depurar todas las ubicaciones donde estaba este código parece que no había ningún sitio más donde había tocado ni inyectado código...
  4. También analizando el código malicioso había visto un dominio donde parecía que pillaba ese código. Esto me hizo pensar en que probablemente tendría un método para auto-regenerarse y volver a infectar el sitio. Me puse a buscar el domino en el código y..... había infectado otro plugin!! pues nada.. ya me ves a mi otra vez analizando y depurando de nuevo....
  5. Después de un par de horas de pura depuración parece que al final tenía el wordpress limpio otra vez.... ALELUYA!

 

LA REANIMACIÓN

Después de limpiar todo el sitio del código malicioso, he reactivado todo los servicios para poder acceder a la web. He estado varios minutos analizando los ficheros de logs, systemd, puertos abiertos, etc... para intentar buscar cualquier actividad sospechosa y bueno ... parece que se había solucionado el problema

Después de 4 horas parece que ya empezaba a ver la luz.... parece que ya empezaba a respirar un poco más tranquilo !!

 

LAS CONSECUENCIAS

Claro, ahora que ya tenía todo funcionando de nuevo... me viene a la cabeza: ostras! y pudo entrar en algún otro sitio del server? infectar otro código? acceder a datos?? Y ya sabéis lo que toca no? a cambiar todas las contraseñas...

  • Cambiar contraseña de usuarios
  • Cambiar accesos a base de datos
  • Revocar y crear otra clave gpg
  • Revisar todos los premisos de nuevo

Esto entre una cosa y otra pues súmale 2 horas mas.....

 

PODÍA SER PEOR !!

Pasaron unos días y la verdad es que pudo ser peor... menos mal que desde el principio ya soy reticente y bastante restrictivo con los permisos y el impacto ha sido mínimo. De echo te dejo por aquí algunos tips:

  • Usa usuarios de ddbb únicos para cada base de datos y con permisos solo para esa misma db
  • Usa usuarios independientes para cada proyecto web. En mi caso tenía uno para los Drupal y otro para el wordpress
  • Aplica permisos restrictivos a ficheros
  • No dejes que algunos usuarios puedan ser root en la máquina (NO sudo)

 

Dinahosting: dominios y alojamiento web
My investor

Regístrate en MyInvestory tendrás un extra de 20€ ! :D

 

Menciona que vienes de mi parte y te llevas un regalo en tu primera inversión :)

Usa el código U048395 y te llevas un regalo en tu primera inversión :)

 

Usa el código 22c80f y te llevas un regalo en tu primera inversión :)