WordPress y el mundo de los CMS V: Hardening WordPress

Buenas compis,

Esta es ya la quinta y seguramente última entrada (aunque igual investigo un poco más y me da para otra, que a este paso también saco un libro a lo 0xword =D) de la guía de pentesting del CMS WordPress. Después de los cuatro primeros artículos en los que se ha metido «plomo» – como diría nuestro amigo Pablo Emilio Escobar de Narcos – (¡Porque a Pablo Escobar se le respeta!)

 

WordPress y el mundo de los CMS I – Enumerando usuarios

WordPress y el mundo de los CMS II – WordPress Dork Hacking

WordPress y el mundo de los CMS III – Escaneando vulnerabilidades

WordPress y el mundo de los CMS IV: ¡Por qué el hacking manual es más divertido!

Ya iba tocando quizás lo más importante como es una buena securización de este CMS, estamos hablando de Hardening de WordPress. Así que sí eres un administrador de sistemas o un blogger y llevas un blog implementando sobre un wordpress, deberías prestar atención 😉

Lo dicho es importante saber atacar – ya sabéis la mejor defensa es un buen ataque – para aprender y mejorar para defender, conociendo los vectores de ataque y pensando como un «bad boy» se puede introducir una capa de seguridad extra.

Después de tanta charla, vamos a verlo =D

A nivel de securización de sistemas, a mi me mola bastante la herramienta lynis pues realiza una auditoria de seguridad e indica una serie de recomendaciones sobre el estado actual del sistema. Como ya escribe una entrada del mismo, os recomiendo que la echéis un ojo, no es plan de entrar mucho más en detalle y así nos centrarmos más en la seguridad a nivel de aplicación web.

Una de las buenas o malas depende de si somos red o blue team es la gran cantidad de plugins que tiene wordpress. Aunque ya se ha comentado en varias ocasiones que los plugins en wordpress suelen ser empleados como vectores de entrada para comprometerlo, hay que reconocer que hay también un par de plugins muy interesantes para securizarlo y además suelen tener soporte, que cada X tiempo sacan actualizaciones y mejoras.

Por lo tanto, sí, se recomienda instalar un par de plugins. Entre ellos, desde mi punto de vista se recomiendan los siguientes:

Wordfence Security

Viene a ser como un IPS (Sistema de Prevención de intrusos), que funciona en base a una serie de reglas de detección de ataques conocidos, de tal manera, que cuando identifica un patrón de ataque lo bloquea.

Particularizando para este plugin, además de bloquear el posible ataque, realiza un bloqueo a nivel de IP de la dirección IP origen del ataque. Ya sabemos que hay bastantes maneras de evadir este bloqueo pero al menos ya le estamos haciendo un poco más difícil la tarea a los «bad boys».

De esta manera, la PoC que explicó muy detalladamente el compañero Alejandro Cañas, es posible que no hubiera tenido éxito, al ser detectada por este plugin.
Por ejemplo, en la pestaña de firewall se tienen todas las reglas implementadas para evitar posibles ataques, especialmente de vulnerabilidades en plugins así como del propio wordpress, aunque no he encontrado la opción de crear propias.

 

wordfence_firewall

 

 

Además, el propio firewall se puede configurar en modo aprendizaje, esto me da como idea pasar un analizador de vulnerabilidades en plan Nessus, Acunetix y cia para ver como reacciona y aprende ante posibles vectores de entrada empleando esta bateria de pruebas — Learning Mode 😉

Tiene muchas otras opciones como bloqueo de IP’s o incluso países, así como una visualización del tráfico en vivo. (a ver cuantos bots hay por ahí xd)

-iThemes security

Una vez activado e instalado, aparecerá en la izquierda un menú con diferentes opciones. Este plugin es realmente interesante pues abarca muchos aspectos que ayudan a gestionar la seguridad de un wordpress.

 

menu_pugin_wordfence

Entre las opciones que aporta destaca:

  • Global Settings: Configuración general de seguridad, ideal para un admin «seguro»
    • Monitorizar posible escrituras de ficheros como wp.config.php o .htaccess.
    • Gestión de notificación de alertas, usuarios bloqueados, IP atacantes,…
    • Gestión de bloqueo de posibles atacantes así como las acciones a tomar.
  • Banned Users: Banear el acceso a IP con user-agents sospechosos. Por defecto trae una lista negra para habilitar, así como introducir los que uno ya tenga localizados.
  • Local Brue Force Protection: Bloquea posibles intentos de fuerza bruta. Se puede configurar para tener una relación entre usabilidad y seguridad con objeto de diferenciar posibles «brutos» respecto a usuarios legítimos que no recuerden la contraseña. Esta opción es esencial puesto que por defecto, wordpress no provee mecanismo para prevenir técnicas de fuerza bruta.

 

 

Se puede configurar desde el número de intentos fallidos (y consecutivos) permitidos para bloquear la cuenta, la visualización del error, el tiempo de banneo para una cuenta de usuario empleada para hacer fuerza bruta.

 

ithemes_security_fuerza_bruta

Y la opción que más me gusta, bloquear automáticamente el intento de login con el usuario «admin». De esta manera, nos obligamos a deshabilitar este usuario y bloqueamos ataques por defecto.

 

ithemes_banner_opciones

 

  • File Change Detection: Proporciona monitorización sobre posibles cambios no esperados en wordpress.
  • Strong Password Enforcement. WordPress es demasiado bueno con los usuarios que siguien empleando contraseñas débiles (sólo les hace rellenar in checkbox, a modo de «me quito de responsabilidades»),  sin embargo, con esta opción se acabo lo que se daba y se aplica una política de contraseñas robusta
  • Logs: Gestión de logs: todos, intentos de fuerza bruta y scan de malware.

 

ithemesecurity_logs

Captcha

Los anteriores plugins prevenían acciones contra ataques de fuerza bruta, pero la mejor y necesaria contramedida es un captcha, de esta manera, se acabaron los técnicas de fuerza bruta automáticas — Hasta luego bots!!

Lo normal es incluir el captcha en el panel de login pero nunca está de más implementarlo también en la opción de incluir comentarios.

 

captcha

 

En este caso he incluido éste pues tiene medidas interesantes, pues sólo deja introducir dígitos nada de letras, caracteres y demás, pero sin duda el mejor posible es el de Google.

All in one WordPress Security

Se define todo en uno, todo lo que necesitas. Esta realmente bien, audita el wordpress y establece una nota del mismo (de 0 a 470). Tienen características muy interesantes como las siguientes:

 

menu_allinone

 

  • Deshabilitar el tag de HTML  que muestra la versión de WordPress (recordar el post II de WordPress)

allinone

  • Prevenir sobre fuerza bruta.
  • Monitorización y aprobación de manera manual la creación de cuentas de usuarios nuevos – Enfocado por si algún software malicioso logra infectar el wordpress y se pone a crear usuarios de manera automática.
  • Protección de firewall.
  • Gestión de listas negras de IP’s.
  • Prevención contra spam
  • Monitorización y detecciones de posibles modificaciones en archivos.
  • Acaba con la vulnerabilidad de Clicjacking, es decir, meter el wordpress en un iframe externo.

Un par de recomendaciones respecto a los plugins, hay muchos no, lo siguiente, algunos están bien y pueden ayudar tanto a dar una mayor usabilidad y estilo al wordpress como para protegerlo, pero tampoco nos volvamos locos instalando todos, en especial, en medidas de seguridad. Especialmente, éstos últimos consumen sus recursos por lo que a ver si nos vamos a quedar sin recursos y al final, tanto querer securizar el wordpress que lo acabamos tirando nosotros.

WordPress tiene muchísima opciones y os invito a que las practiquéis. Yo sólo he introducido un par de ideas por dónde empezar y algunos detalles a tener en cuenta.

Como ya sabéis Chema Alonso y Pablo González sacaron un par de publicaciones sobre un guía de hardening de WordPress llamado «My WordPress in Paranoide Mode» que es realmente interesante y que menos que citarlo si estamos hablando de hardening de WordPress. Os dejo el vídeo:

 

 

Análogamente, a nivel particular añadir el famoso «pestillo» de Latch para proteger la cuenta de wordpress nunca está de menos. Os dejo un tutorial por si os interesa:

 

Por último, unas recomendaciones:

  • Actualizar wordpress a la última versión estable. Desde que se encuentra un exploit hasta que se parchea y se publica, cualquier wordpress está expuesto. Mejor actualizar cuanto antes a arriesgarse a ser una de estas posibles víctimas. En el articuo II de está guía ya se vio la cantidad de WordPress desactualizados y obsoletos que hay en la red.
  • Actualizar plugins y themes, pues suelen ser los principales vectores de entrada para comprometer un wordpress.

Respecto a las actualizaciones si pueden ser de manera manual mejor, pues wordpress tiene una opción para actualizar automáticamente cada vez que se dispongan de nuevas versiones pero hace poco leí el siguiente artículo: https://www.wordfence.com/blog/2016/11/hacking-27-web-via-wordpress-auto-update/ que os invito a que lo miréis. Relata como un 27% de wordpress fueron comprometidos debido al compromiso del sistema automático de actualizaciones.

Esta vez al ser una guía de defensa no hace falta mensaje de responsabilidad, no obstante, sed buenos!

Espero que os sea útil y os haya gustado.

Saludos.

N4xh4ck5

La mejor defensa es un buen ataque.