Ejecución remota de código con privilegios de sistema en dispositivos TP-Link SR20

Fallo encontrado en el router y hub TP-Link SR20 que permite a un atacante ejecutar código remoto con privilegio de root. Para ello es necesario estar conectado en la misma red ya que las reglas del firewall por defecto bloquean el acceso a la WAN.

Es común encontrar en los routers TP-Link un ejecutable llamado tddp utilizado para la depuración del dispositivo. Este proceso ya ha tenido fallos en el pasado. Lo interesante es que en la versión 2 es necesario acceder con la contraseña de administrador, pero en la versión 1 no es necesario autenticarse, y resulta que el SR20 aún soporta comandos de la versión 1.

Al analizar tddp se puede ver que la función recvfrom() se encarga de copiar información de un network socket y seleccionar un protocolo a utilizar según el primer byte del paquete enviado. En la versión 1 comprueba el segundo byte para realizar una llamada a la función que va a tratar este paquete. Si este segundo byte es 0x31 llama a CMD_FTEST_CONFIG.

CMD_FTEST_CONFIG parsea el contenido del paquete a un payload que contiene dos strings separadas por un punto y coma. La primera cadena corresponde a un nombre de fichero y la segunda a un archivo de configuración. Luego llama a tddp_exexCmd

tddp_execCmd("cd /tmp; tftp -gr %s %s &",luaFile,remote_address)

Que ejecuta el comando tftp en segundo plano y se conecta de nuevo a la máquina que envió el comando donde trata de descargar el archivo correspondiente al nombre pasado como parámetro.

El proceso en tddp espera 4 segundos para que aparezca el archivo, una vez aparece, lo carga en un interprete Lua inicializado anteriormente, y llama a la función config_test() enviándole como argumentos el nombre de archivo de configuración junto con la dirección remota.
Al ser config_test() proporcionado por el archivo que se descargó desde la máquina remota, nos da la opción de realizar una ejecución remota en el intérprete. Pudiendo ser explotada utilizando el método os.execute de Lua con el que podremos ejecuta comandos bash.
Al ejecutarse tddp como root tendremos permiso de administrador.

Para llevar este proceso a cabo es necesario estar conectado en la misma red, ya que las reglas de firewall por defecto bloquean el acceso a la WAN, aunque una vez explotado es posible dejar un backdoor que de acceso remoto en el futuro.

Matthew Garret, investigador de Google, fue quien encontró el fallo, y en su cuenta de Twitter explica que reportó el error a la empresa TP-Link, pero al no obtener respuesta decidió hacerlo público 90 días después de dicho reporte.

Podéis ver la prueba de concepto aquí.

Más información

dreamwidth.org
https://mjg59.dreamwidth.org/51672.html

tuexperto
https://www.tuexperto.com/2016/02/22/tp-link-sr20-un-router-para-dispositivos-conectados-smart-home/

twitter
https://twitter.com/mjg59/status/1111106885736787975

Powered by WPeMatico

Gustavo Genez

Informático de corazón y apasionado por la tecnología. La misión de este blog es llegar a los usuarios y profesionales con información y trucos acerca de la Seguridad Informática.