Ejecución de comandos en Zhone GPON-2520 y remote root shell (puerta trasera)

El Zhone GPON-2520 con firmware R4.0.2.566b contiene dos vulnerabilidades serias:
La primera es la ejecución de comandos arbitrarios (como súper usuario) a través de la interfaz de administración web. Esta vulnerabilidad ya había sido encontrada y documentada anteriormente en el siguiente artículo http://www.websec.mx/advisories/view/Ejecuci%C3%B3n-de-comandos-en-Alcatel-Lucent-I-240W-Q por mi colega Luis Colunga que afecta módems Alcatel.
La otra vulnerabilidad no documentada es que además de que podemos ejecutar comandos remotos existe la posibilidad de habilitar el acceso al servicio de SSH (que por default esta filtrado por firewall) y conectarnos a los diferentes entornos de comandos que nos permiten cambiar y modificar configuraciones del GPON a través de una puerta trasera.
Para hacer más sencillo el proceso, he creado un POC que permite deshabilitar las reglas del firewall que filtran el tráfico entrante ssh/telnet/ftp hacía el GPON y así conectarnos a las diferentes consolas de comandos como súper usuario (sin afectar la conectividad, teléfono ni servicios de televisión).
Primero revisemos los puertos abiertos que son visibles por default a través de internet al GPON (utilizando https://w3dt.net/ para el port scan)
Puertos abiertos visibles a través de la red local:
Los únicos requisitos para correr el POC es saber la IP interna del GPON, el usuario y password del usuario web (por default son root/admin) aunque en mi caso lo cambié por: root/gp0wn:
Una vez que confirmamos acceso al GPON, podemos correr el POC.
Ya con esto habremos desactivado la regla del firewall que bloquea las conexiones entrantes a telnet, ssh y ftp.
Ahora utilicemos la cuenta “backdoor” para entrar por ssh y tener acceso como súper usuario.
Para fines de documentación, la puerta trasera se encuentra configurada en el archivo /etc/ rg_zhone.xml
Por otro lado también está la backdoor mencionada en otro advisory de módems Alcatel de otra compañía de servicios:
Hay otra cuenta de ftp (ont:ont) que se encuentra en el passwd y en la configuración del router:
Así como en el /etc/passwd junto con la cuenta de root, cuyo password es 111111:
Comento que la interfaz de súper usuario tiene varios modos (después de entrar al modo enable)
Cómo podrán darse cuenta, se obtiene acceso prácticamente a toda la unidad, por ejemplo, para deshabilitar los leds del router, basta con ejecutar los siguientes comandos:
Por último, si requieren hacer rollback a algún cambio, basta con reiniciar el GPON o en su defecto, si gustan agregarle una capa más de protección, aquí les dejo los comandos de iptables para filtrar el tráfico hacia el GPON desde Internet así como desde la compañía de servicios:
Bloquear el tráfico desde internet:
iptables -A INPUT -i wan0 -p tcp –dport 22 -j DROP
iptables -A INPUT -i wan0 -p tcp –dport 22 -j DROP
iptables -A INPUT -i wan0 -p tcp –dport 23 -j DROP
iptables -A INPUT -i wan0 -p tcp –dport 53 -j DROP
iptables -A INPUT -i wan0 -p tcp –dport 80 -j DROP
iptables -A INPUT -i wan0 -p tcp –dport 7001 -j DROP
iptables -A INPUT -i wan0 -p tcp –dport 7002 -j DROP
iptables -A INPUT -i wan0 -p tcp –dport 49152 -j DROP
Bloquear el tráfico desde red interna
iptables -A INPUT -i wan8 -p tcp –dport 22 -j DROP
iptables -A INPUT -i wan8 -p tcp –dport 22 -j DROP
iptables -A INPUT -i wan8 -p tcp –dport 23 -j DROP
iptables -A INPUT -i wan8 -p tcp –dport 53 -j DROP
iptables -A INPUT -i wan8 -p tcp –dport 80 -j DROP
iptables -A INPUT -i wan8 -p tcp –dport 7001 -j DROP
iptables -A INPUT -i wan8 -p tcp –dport 7002 -j DROP
iptables -A INPUT -i wan8 -p tcp –dport 49152 -j DROP
Resultado de un port scan desde internet:
Saludos, no documenté cómo hacer los cambios permanentes porqué se corre el riesgo de dañar las unidades, así que las pruebas que hagan son bajo su propio riesgo y responsabilidad, aunque si quieren compartir algo o quieren hacer intercambio de ideas de que más se puede hacer no duden en ponerse en contacto con un servidor.
Kaczinski : lramirez@websec.mx