09 mayo 2011

Una inyección SQL que te dejará helado (CVE-2010-4284)

Todos conocemos ya lo que es una inyección de código SQL (por lo menos si visitas SecurityByDefault asíduamente), su importancia, su cantidad de formas de utilización y explotación, así como el juego que puede dar en según que páginas web. Es una vulnerabilidad antigua, que se puede evitar fácilmente, pero que aún a día de hoy, es posible encontrarla en cualquier tipo de página o sitio, sea de una compañía grande o pequeña.

No sólo se puede utilizar para la extracción de información de una base de datos mediante un conjunto de consultas, también se pueden crear sentencias concretas que permitirían autenticarse en un formulario sin conocer ni usuario ni contraseña, o acceder como un usuario determinado sin necesidad de conocer su contraseña. Que sensación se le queda a uno en el cuerpo cuando, tras introducir el famoso "orunoigualauno" en los campos de un formulario de autenticación y encontrarte con un "Bienvenido al panel del control admin!", ¿verdad?.

Volvamos al motivo de este post, tras esta pequeña introducción: Hoy vamos a hablar de aires acondicionados, ahora que parece que en breve comenzará a apretar el calor by default del verano. Y vamos a hablar de inyecciones SQL en páginas atípicas, como son en paneles de control de dispositivos cerrados, por lo que la implantación de la solución resulta algo más compleja, sobretodo si se sabe que dicho dispositivo se ha implantado físicamente en más de 15 países.

Imaginemos la situación en una casa: si queremos apagar o encender el aire acondicionado, regularlo, controlarlo, hacer que automáticamente se encienda y apague en un determinado momento del día, así como subir o bajar la temperatura bajo demanda, recurrimos al mando a distancia típico. Pero, ¿y si nos encontramos en un edificio de X plantas de una oficina, colegio, universidad o cualquier otro tipo de organización, con un aparato de aire acondicionado por cada departamento, sección, clase o aula? El ir aparato por aparato, con su correspondiente mando, cambiando la configuración o estableciendo los valores de temperatura deseados, puede llegar a ser una tarea ardua. Solidaridad con lo pobres conserjes, por favor.

Para ello, existen dispositivos mediante los cuales es posible monitorizar y administrar un gran número de aparatos de aire acondicionado...cómodamente desde un navegador web...¡como a mi me gustan!

Uno de estos aparatos es el Integrated Management System DMS de la compañía Samsung, y tiene una pinta tal que así:


El diagrama del sistema completo gestionado mediante el DMS es el siguiente:


Entre sus funciones destacan, como no, la gestión centralizada, establecimiento de límites de temperatura, monitorización por equipo, establecer temperaturas por hora (por ejemplo, definir que únicamente funcione con unas características determinadas en una franja horaria que podría ser el horario laboral), distribución de potencia por aparato (y así controlar el gasto energético)...y...la posibilidad de interactuar con el sistema de control de incendios...



Para acceder a tal conjunto de interesantes funcionalidades, únicamente es necesario acceder vía web al dispositivo a través del puerto 80 (como si se tratase de un router adsl normal), y nos encontraremos el siguiente formulario de login:
Sabéis el siguiente paso, tras lo contado en la introducción de este post ¿no?
¿Y qué ocurre?

Estado de todos los dispositivos conectados
Historial de error de todos los aparatos conectados
Estableciendo una "agenda" de acciones para los dispositivos conectados

La sentencia ejecutada en el formulario de autenticación, además de permitirnos entrar en el sistema, nos otorgará los privilegios del primer usuario que aparezca en la tabla de usuarios...¿os podéis imaginar cual puede ser en el siguiente caso? Accedamos al menú de gestión de usuarios del dispositivo:

Gestión de cuentas de usuario para acceso al dispositivo
Control total sobre el dispositivo con lo que ello conlleva, gracias al amplio abanico de funcionalidades que ofrece este dispositivo. No necesitamos saber usuarios y contraseñas por defecto.

Samsung, en coordinación con el ICS-CERT, ha publicado una actualización para esta vulnerabilidad, como se puede ver en el informe de seguridad correspondiente. También podréis consultar la notificación de seguridad ICSA-11-069-01 [PDF] publicada por el propio ICS-CERT. Se recomienda a los usuarios actualizar los sistemas mediante el parche proporcionado por el fabricante.

Vulnerabilidad de inyección SQL que quizás no nos permita extraer información de una base de datos, pero como dice el título, podría dejar helado a tus compañeros de trabajo, aunque también te permitiría hacerles sudar. O quién sabe, si en un momento dado necesitáis una sala de reuniones con la temperatura adecuada para colgar unos buenos jamones...

Referencias:
[+] http://www.kb.cert.org/vuls/id/236668
[+] http://www.securityfocus.com/bid/47746
[+] http://www.us-cert.gov/control_systems/pdf/ICSA-11-069-01.pdf

4 comments :

Román Ramírez dijo...

:) cuántas veces hemos hablado de meter ' or 1=1-- en la banda magnética de las tarjetas y cuántos backends serán vulnerables...

Otro target curioso para este tipo de inyecciones atípicas puede ser (un, dos, tres, inyecte otra vez...):

- Paneles de alerta de alarmas de algunas empresas muy importantes de seguridad (implica retocar el firm del sistema de alarma para que reporte el status con la inyección)

- Sistemas de gestión de centralitas y robots de llamada (no me atrevo a indicar fabricantes ;) ). "Diga con voz clara su consulta: comita or uno igual uno menos menos"

- Fotos de matrículas y radares.

- QRCodes

- Escaner y OCR hoteleros y aplicación de gestión de reservas hoteleras: retocando datos del dni que luego se procesarán en una aplicación...

Por PI/e euros, ponga usted sus ejemplos...

ThXou dijo...

Que grande sois!!. Yo soy nuevo en estos temas, pero me atraen muchisimo. Jamás probé lo del ' or '1'='1', pero tengo en mente algunos dispositivos en los quepuedo probar :). Menudos artículos tios!

Vicente Motos dijo...

Y como señalaba en su post reversemode:
http://eripp.com/?ipdb=1&search=samsung+data+management&sort=time&order=DESC&limit=1000





351
Samsung ​Data ​Management ​Server potencialmente vulnerables!
Vamos yo no lo he probado por si acaso con esto de la reforma de la ley,
pero me ha dicho un amigo del extranjero [...] que la mayoría no están
actualizados (y lo que queda hasta que se actualicen!)...





Hay que joderse como todavía puede haber este tipo login bypass ...





Gracias por el post!

Santiago Monrobé dijo...

 Me parece muy interesante lo que comentas aunque si no te importa Román mis conocimientos son escasos y llego a poner en practica tus supuestos.
¿Podrias si no te importa exclarecermelos un poco?