sábado, 6 de enero de 2018

[#SeaTel/cobham] Terminales Satelitales, vulnerabilidades geolocalizables (que saben flotar)


Post dedicado a terminales satelitales marítimas "SeaTel",de Cobham. 



Hoy Sea Tel, se posiciona como líder del mercado de VSAT marítimo.


Acerca de Cobham
Para poner un poco de contexto, arranco presentando a la firma responsable detrás de los equipos que junto a @bertinjoseb estamos investigando.
  
"Los productos y servicios de Cobham han estado en el corazón de los sofisticados sistemas militares y civiles durante más de 75 años, manteniendo seguras a las personas, mejorando las comunicaciones e incrementando la capacidad de las plataformas terrestres, marinas, aéreas y espaciales. La compañía posee tres divisiones que emplean a más de 11.000 personas en cinco continentes, con clientes y socios en más de 100 países e ingresos anuales de aproximadamente GBP 1.900 millones (USD 3.000 millones)".



Las antenas:
Para no desvirtuar con las distintas opciones que presta Cobham entramos ya en tema. 
Las antenas de SEA TEL, son tipicamente usadas en barcos. Su posición es auto-ajustable según el movimiento de la nave para que la antena apunte siempre adecuadamente al satélite deseado.

Como dato extra: Sea tel, cuenta entre sus prototipos antenas que pueden recibir de mas de cinco satélites diferentes. DirectTV, por ejemplo. (El plato es multi satelite.)
Sea Tel cuenta: "Los radomos completamente blancos son de SeaTel, aquellos con una raya gris en la parte baja son de un competidor y los ovales son de otro competidos. Mas de las tres cuarta parte de los yates utilizan SeaTel "


Administracion
Estos equipos tiene diferentes servicios embebidos para poder administrarlos o simplemente consultar su estado de manera remota.
Corren un servidor web, acceso a una terminal de comando para ser accedida via telnet (nada de ssh ) corren snmp y desde luego los accesos fisicos.

Accesos fisico:








La terminal: 


El dispositivos cuanta con una terminal que nos permite consultar información del sistema, satélite, barco y setear esta información.
Aspecto/acceso Web:

Claramente para acceder a este tipo de dispositivos vamos a necesitar credenciales. 
Como era de esperar(tristemente) mayormente el acceso es gracias a las credenciales del manual.

 


Vulnerabilidades identificas:

[vuln 1] CROSS PROTOCOL INJECTION:
CVE(reservado): CVE-2018-5071
Es una vulnerabilidad que con @bertinjoseb venimos explotando bastante mediante inyecciones con algún tag script sobre los OID (de SNMP) que comparten el string con la aplicación web.

El caso siguiente caso es muy similar: El seteo de la información la hacemos mediante Telnet. 



( Las siguiente fotos son irreemplazables y corresponden al primer caso de éxito. @bertinjoseb)


Nos logueamos en la terminal:






Exito !!!



[vuln 2]  Usuarios harcodeados. wtf?:

CVE: CVE-2018-5266
Cuando un atacante se encuentra frente al clasico input(user:passwd) que pida credenciales, tiene que resolver dos problemas. Conseguir el usuario y su contraseña. Obtener solo uno de estos datos de nada sirve sin el otro. 

Básicamente al poder completar alguno de estos inputs se tiene resuelto el %50 del problema.


Seguramente luego de probar combinaciones tradicionales (admin:admin, admin:1234, etc), un atacante buscara los manuales y/o documentación (oficial, o no) del dispositivo al que quiera acceder con la esperanza de dar con  las credenciales por defecto, confiando que tal vez su objetivo aun las mantenga activas.

Por ejemplo:



Me pongo a leer los distintos JS, de la aplicación y me encuentro con algo asquerosamente mágico:




Estan los usernames, y dependiendo del usuario es el menú que le corresponde:

Por lo tanto si un atacante no encuentra la dichosa documentación, leyendo llamando al recurso /js/userLogin.js tendra al menos los usuarios.  


POC:





[vuln 3Bypass Login:
CVE: CVE-2018-5267
... y que pasa si no tengo documentación? que pasa si el atacante no logra dar con los distintos  usuarios y sus contraseñas?

Simplemente debera cambiar /login.html por alguno de los distintos menú que le interese.



MenuDealerGx.html
MenuDealer.html
MenuEuNCGx.html
MenuEuNC.html
MenuSysGx.html
MenuSys.html



[+] user: Dealer



[+] user: SysAdmin



[+] user: User




nota final:
Un instante antes de que carge la pagina completa puede que se dispare un alerta desde javascript que pone lo siguiente "null logged in. The system takes steap to make your login as precedence. Please try to login now", si es el caso (que dependerá de la versión del dispositivo) simplemente pausamos la carga de la web damos "ok" al alert y estamos adentro !



Saludos,
@capitan_alfa

No hay comentarios.:

Publicar un comentario