CVE-2019-14453 – Bypass de inicio de sesión del panel web de control domótico Comelit.

Versiones afectadas del controlador domótico:

Firmware hasta la versión v2.8.0

Imagen 1 – Versión del dispositivo.

Durante la inspección de este tipo de panel web del dispositivo de control domótico se verificó que, a pesar de que el portal web solicitaba un código de acceso para realizar los cambios de configuración en el controlador, esto solo afectaba a nivel visual, debido a que en la respuesta html sí que se estaban renderizando los recursos necesarios para controlar el dispositivo.

Imagen 2 – El panel muestra la necesidad de introducir un código de acceso.

Estudiando la lógica del código JS en /js/bridge.min.js de la aplicación web (siempre nos referiremos como aplicación web a la aplicación de control del panel domótico) podemos verificar que se hace una comparación del valor “domus” con determinador números y caracteres. Dependiendo de los caracteres y número situados en las posiciones de dicha variable, hemos conseguido que el sistema nos de acceso como usuario, técnico y administrador haciendo uso del siguiente valor para dicha variable: “1C000000000S” en la respuesta de la petición de la aplicación hacia la ruta /login.json (modificando la respuesta de servidor -> cliente)

Imagen 3 – Trozo de JS que nos daba indicios para modificar el parámetro «domus».

Por lo tanto, la respuesta original de /login.json hacía que la aplicación nos renderizase una petición de claves (innecesarias)

Imagen 4 – respuesta original de la petición hacia /login.json

Y esta sería la respuesta tras realizar la modificación de la variable «domus» al reescribir la respuesta del servidor.

Imagen 5 – respuesta modificada de la petición hacia /login.json

Una vez realizada esa modificación, podemos ver que el sistema nos permite realizar cualquier tipo de cambio en los sensores y actuadores domóticos sin realmente conocer el código de acceso.

Imagen 6 – Control de climatización.

Imagen 7 – Configuración de red.

Imagen 8 – Control de luces.

Happy Hacking!

-SYLM-

Uso de punteros en Go

Una imagen vale más que 1000 palabras, y en la siguiente podemos ver el uso de los punteros en Go.

Variable, puntero a variable y puntero a puntero. Así como el acceso y la modificación del valor de estos.

Este ejemplo expuesto servirá para comprender las funciones de librerías que te piden datos del estilo *<tipo> o **<tipo>.

Un saludo! 😉

-SYLM-