A pocas semanas de salir al público la nueva RC de la versión 6 del CRM open source vtiger, el equipo de desarrollo se encuentra dándole sus últimos retoques. El 14 de Julio fue actualizada la rama de desarrollo de la versión 6 del crm en la cual se corregía un error de seguridad al parecer menor que había sido publicado semanas antes en la lista de desarrolladores, el cual permitía a cualquier usuario del CRM tener privilegios de adminitrador ingresando a la configuración de su perfil.

Realizando pruebas con la versión beta descubrí algo interesante, no solamente la vulnerabilidad seguía existiendo sino que había una vulnerabilidad mucho mas grave. Vamos al grano.

El error estaba supuestamente corregido ya que no permitía cambiar desde la interfaz de usuario el campo admin de las propiedades del usuario, pese a esto el problema persiste:

No permite cambiar el campo Admin No permite cambiar el campo Admin

Las modificaciones realizadas a cualquier campo en la propiedades de usuario, se hacen efectivas por medio de una petición AJAX a través de un mensaje HTTP usando el método POST dirigido al index.php de vtiger, la cual podemos observar con el proxy ZAP, el siguiente es el cuerpo del mensaje si intentamos cambiar el correo del usuario:

Cuerpo del Mensaje HTTP POST Cuerpo del Mensaje HTTP POST

De esta manera explotar la vulnerabilidad previamente corregida por la GUI de vtiger se vuelve sencillo, ya que si capturamos el mensaje anterior y modificamos los parámetros value y field de la siguiente manera, nuestro usuario será admin del sistema vtiger:

Petición AJAX modificada Petición AJAX modificada

Pero ahí no termina todo, si prestamos atención al parámetro record de la petición nos damos cuenta que hace referencia al id de nuestro usuario en la base de datos, ¿Qué pasa si modificamos la petición AJAX de la siguiente manera?:

Quitando privilegios de administrador al usuario admin Quitando privilegios de administrador al usuario admin

Con la anterior alteración del mensaje, quitamos los privilegios de administrador al usuario admin ya que en la instalación por defecto dicho registro (del usuario admin) queda con el id igual a 1. De esta manera hemos escalado privilegios en el sistema vtiger y lo que es peor aún, removido al usuario admin de sus privilegios 😱.

Ya he reportado tanto a la lista de desarrolladores como al Bug Trac del proyecto, esperemos que sea corregido para la RC que se lanzará en las próximas semanas. Al tener que contar con las credenciales de login de un usuario válido en el sistema, considero que el error es medio-bajo ya que el ataque debe venir al interior de la organización por un usuario de nuestro sistema CRM.

Update: Revisando el reporte de Bug Trac tiempo después, encuentro que se han demorado un año para solucionar la vulnerabilidad :scream: